Flask使用Flask-SQLAlchemy操作MySQL數據庫


前言:

Flask-SQLAlchemy是一個Flask擴展,簡化了在Flask程序中使用SQLAlchemy的操作。SQLAlchemy是一個很強大的關系型數據庫框架,支持多種數據庫后台。SQLAlchemy提供了高層ORM,也提供了使用數據庫原生SQL的低層功能。

學習了Flask-SQLAlchemy下MySQL的配置和增刪改查,供初學者作為參考。(python3+flask)


一、pip安裝擴展庫

>>>pip3 install flask-sqlalchemy

>>>pip3 install flask-mysqldb


二、配置並初始化數據庫

SQLALCHEMY_DATABASE_URI ,配置使用的數據庫URL,而配置MySQL的URL格式為:

mysql://username:password@hostname/database

SQLALCHEMY_TRACK_MODIFICATIONS ,設置成True(默認情況),Flask-SQLAlchemy 將會追蹤對象的修改並且發送信號。

 

三、創建數據庫 


四、定義模型

1、最常使用的SQLAlchemy列選項

primary_key    | 如果設為True,這列就是表的主鍵

unique           | 如果設為True,這列不允許出現重復的值

index             | 如果設為True,為這列創建索引,提升查詢效率

nullable          | 如果設為True,這列允許使用空值,False則不允許使用空值

default           | 為這列定義默認值

2、一對多關系

添加到Variable模型中的env_id列被定義為外鍵,就是這個外鍵建立起了關系。

傳給db.ForeignKey()的參數'environments.id'表明,這列的值是environments.id表中行的id值。

3、關系的面向對象視角

添加到Environments模型中的variable屬性代表這個關系的面向對象視角。對於一個Environments類的實例,其variable屬性將返回與角色相關聯的用戶組成的列表。

db.relationship()的第一個參數表明這個關系的另一端是哪個模型。

db.relationship()的backref參數向Environments模型中添加一個variable屬性,從而定義反向關系。

db.relationship()的lazy=dynamic參數表明:不加載記錄,但提供加載記錄的查詢。


五、數據庫操作

1、創建表

>>> db.create_all()

2、刪除表

>>> db.drop_all()

3、插入行

#將variable添加到會話中

>>>db.session.add(variable)

#commit()方法提交會話

>>>db.session.commit()

4、 查詢數據

(1)all(查詢全部數據)

Environments.query.all()

(2)filter_by查詢(精確查詢)

Environments.query.filter_by(id=id).first()

(3)join(聯表一對多查詢)

Variable.query.filter_by(env_id=env_id,id=id).join(Environments,Variable.env_id == Environments.id).first_or_404()

(4)count(返回查詢結果的數量)

Environments.query.filter_by(id=id).count()

5、刪除數據

db.session.delete(variablelists)

db.session.commit()

6、刪除多條數據

variablelists= Variable.query.filter_by(env_id=env_id).all()

for var in variablelists:

    db.session.delete(var)

db.session.commit()


 

 

以上,希望對你有所幫助~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM