Flask數據庫基本操作-SQLAlchemy

Flask數據庫
D:使用擴展包flask-sqlalchemy來操作數據庫(增刪改查)
E:通過 Python 對象來操作數據庫,在捨棄一些性能開銷的同時,換來的是開發效率的較大提升
U:常用的SQLAlchemy字段類型
在這裏插入圖片描述
常用的SQLAlchemy列選項
在這裏插入圖片描述
常用的SQLAlchemy關係選項
在這裏插入圖片描述
①安裝擴展包及導包
安裝flask-sqlalchemy:pip install flask-sqlalchemy
如果連接的是mysql數據,需安裝mysqldb:pip install flask-sqlalchemy
導包:from flask_sqlalchemy import SQLAlchemy
②配置相關數據庫的設置

#數據庫信息設置
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]:3306/數據庫名'
# 動態追蹤修改設置,如未設置只會提示警告,極大影響mysql性能app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

③創建連接數據庫的對象

db = SQLAlchemy(app)

④定義模型類,繼承db.Model
定義數據庫的表名: tablename
設置字段: 字段=db.Column(db.字段類型,字段選項)
例如:id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
設置關聯屬性: books = db.relationship(‘Book’, backref=‘author’, lazy=‘dynamic’)
給該模型類添加一個屬性,第一個參數爲多類類名,通過這個屬性可以查詢一對多所有對象
第二個參數backref =’該類類名小寫‘,是反向給多類申明一個新屬性
第三個參數指定是lazy屬性,即何時加載數據,dynamic指的是在訪問屬性的時候,並沒有在內存中加載數據,而是返回一個query對象, 需要執行相應方法纔可以獲取對象,比如.all()

⑤無遷移式的建表和刪表
db.drop_all() 刪除該數據庫所有的表 db.create_all() 在該數據庫下創建所有模型類映射的表

增刪改查
增:①創建對象: b =Book(name=‘圖書’)
②把數據添加到用戶會話:db.session.add(b)
如果多個對象,使用db.session.add_all([b1,b2,b3])
③提交用戶會話到數據庫: db.session.commit()
刪:第一種方式:
①查出該對象: b=Book.query.get(1)
②從用戶會話刪除該對對象: db.session.delete(b)
③提交用戶會話: db.session.commit()
第二種方式:
①查出對象直接刪除: Book.query.get(1).delete()
②提交用戶會話: db.session.commit()
改:①查出該對象: b=Book.query.get(1)
②修改對象屬性: b.name=‘小說’
③提交用戶會話: db.session.commit()
查:①無條件查詢:Book.query.查詢執行器
②條件查詢:Book.query.過濾器.查詢執行器
常用過濾器如下:
在這裏插入圖片描述
常用查詢執行器如下:
在這裏插入圖片描述

邏輯非,邏輯與,邏輯或
from sqlalchemy import not_,and_,or_
示例:User.query.filter(not_(User.name==‘chen’)).all()
User.query.filter(and_(User.name!=‘wang’,User.email.endswith(‘163.com’))).all()

一對多,多對一關聯查詢
一對多
①先查詢出一類對象,例如author=Author.query.get(1)
②根據我們設置的relationship屬性獲取這一類對象下的全部多類對象:
books=author.books (即該作者下全部書籍)
多對一:
①查詢出多類對象,例如book=Book.query.get(2)
②根據我們設置的backref反向設置的屬性獲取該多類對象對應的一類對象:
author =book.author (即這本書所屬的作者)

flask數據庫遷移
D:在數據庫中建立模型類映射的數據庫表,如果需要修改數據庫模型,還要在修改之後更新數據庫,最好的解決的方法使用數據庫遷移框架Flask-Migrate
E:建立相關數據庫表,而且追蹤數據庫模式的變化,然後把變動應用到數據庫中,還可以回退版本。
U:遷移步驟:
①安裝擴展包:遷移擴展包:pip install flask-migrate,腳本管理器包:pip install flask-script
②導包:from flask_migrate import Migrate,MigrateCommand from flask_script import Shell,Manager
③創建腳本管理器:manager= Manager(app)
④遷移關聯應用和數據庫:Migrate(app,db)
⑤添加遷移命令道腳本管理器:manager.add_command(‘db’,MigrateCommand)
⑥使用腳本命令在命令行進行遷移操作:
在這裏插入圖片描述

發佈了22 篇原創文章 · 獲贊 11 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章