1. 程式人生 > >Python中Flask基礎入門(四)

Python中Flask基礎入門(四)

資料庫基本操作
在Flask-SQLAlchemy中,插入、修改、刪除操作,均由資料庫會話管理。會話用db.session表示。在準備把資料寫入資料庫前,要先將資料新增到會話中然後呼叫commit()方法提交會話。

資料庫會話是為了保證資料的一致性,避免因部分更新導致資料不一致。提交操作把會話物件全部寫入資料庫,如果寫入過程發生錯誤,整個會話都會失效。

資料庫會話也可以回滾,通過db.session.rollback()方法,實現會話提交資料前的狀態。

在Flask-SQLAlchemy中,查詢操作是通過query物件操作資料。最基本的查詢是返回表中所有資料,可以通過過濾器進行更精確的資料庫查詢。

下面是具體的資料會話過程

 ro1 = Role(name="admin")

    db.session.add(ro1)
    db.session.commit()

介紹一下在如何對資料庫進行查詢,刪,增,改請看前面的部落格。

https://blog.csdn.net/sunshunli/article/details/83279054

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# app.config['SQLALCHEMY_DATABASE_URI']='mysql://root:
[email protected]
/3306'#配置資料庫的地址 app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:[email protected]/base' app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False#跟蹤資料庫的修改 db = SQLAlchemy(app) #資料庫模型。需要繼承db.Model class Role(db.Model): #定義表名 _tablename_='role' #定義欄位 id = db.Column(db.Integer,primary_key=True) name = db.Column(db.String(64),unique=True,nullable=True) #進行表與表之間的關聯,表示和users進行了關聯,添加了一個user屬性,但是這個屬性不會再表中出現。 users = db.relationship('User', backref='role')#第一個引數要填模型名字。而不是表的名字。 def __repr__(self): return '<Role %s>' % self.name class User(db.Model): # 定義表名 _tablename_ = 'users' # 定義欄位 id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), unique=True) email = db.Column(db.String(64),unique=True) password = db.Column(db.String(64)) #ForeignKey表示是外來鍵 role_id = db.Column(db.Integer, db.ForeignKey('role.id')) def __repr__(self): return '<User %s>' % self.name @app.route('/') def index(): return 'helloworld' if __name__ == '__main__': #刪除表 db.drop_all() #建立表 db.create_all() ro1 = Role(name="admin") db.session.add(ro1) db.session.commit() ro2 = Role(name="user") db.session.add(ro2) db.session.commit() us1 = User(name='wang', email='
[email protected]
', password='123456', role_id=ro1.id) us2 = User(name='zhang', email='[email protected]', password='201512', role_id=ro2.id) us3 = User(name='chen', email='[email protected]', password='987654', role_id=ro2.id) us4 = User(name='zhou', email='[email protected]', password='456789', role_id=ro1.id) us5 = User(name='tang', email='[email protected]', password='158104', role_id=ro2.id) us6 = User(name='wu', email='[email protected]', password='5623514', role_id=ro2.id) us7 = User(name='qian', email='[email protected]', password='1543567', role_id=ro1.id) us8 = User(name='liu', email='[email protected]', password='867322', role_id=ro1.id) us9 = User(name='li', email='[email protected]', password='4526342', role_id=ro2.id) us10 = User(name='sun', email='[email protected]', password='235523', role_id=ro2.id) db.session.add_all([us1, us2, us3, us4, us5, us6, us7, us8, us9, us10]) db.session.commit() app.run(debug=True)

我們可以在Pycharm的terminal中輸入 Ipython,然後 from xxx import *,xxx為你的py程式碼的名字。

然後就可以進行查找了。

下面介紹一下有哪些查詢的方法。