Flask使用Flask-SQLAlchemy操作MySQL数据库
https://www.jianshu.com/p/6ae0d30a5539
?
?
前言:
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()
以上,希望對你有所幫助~
作者:小喜_ww
鏈接:https://www.jianshu.com/p/6ae0d30a5539
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。
?
總結
以上是生活随笔為你收集整理的Flask使用Flask-SQLAlchemy操作MySQL数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ssh无密码公钥登陆
- 下一篇: mac 怎样卸载mysql_如何卸载ma