Python中Flask基礎入門(四)
阿新 • • 發佈:2018-11-02
資料庫基本操作
在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程式碼的名字。
然後就可以進行查找了。
下面介紹一下有哪些查詢的方法。