Flask中一般使用flask-sqlalchemy來(lái)操作數(shù)據(jù)庫(kù)。flask-sqlalchemy的使用介紹如下:
一、SQLAlchemy
- SQLALchemy 實(shí)際上是對(duì)數(shù)據(jù)庫(kù)的抽象,讓開(kāi)發(fā)者不用直接和 SQL 語(yǔ)句打交道,而是通過(guò) Python
對(duì)象來(lái)操作數(shù)據(jù)庫(kù),在舍棄一些性能開(kāi)銷的同時(shí),換來(lái)的是開(kāi)發(fā)效率的較大提升。 - SQLAlchemy是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)框架,支持多種數(shù)據(jù)庫(kù)后臺(tái)。它提供了高層的 ORM 和底層的原生數(shù)據(jù)庫(kù)的操作。flask-sqlalchemy
是一個(gè)簡(jiǎn)化了 SQLAlchemy 操作的flask擴(kuò)展。
備注:ORM 全拼Object-Relation Mapping. 稱為對(duì)象-關(guān)系映射主要實(shí)現(xiàn)模型對(duì)象到關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)的映射.比如:把數(shù)據(jù)庫(kù)表中每條記錄映射為一個(gè)模型對(duì)象
二、flask-sqlalchemy安裝
- 安裝flask-sqlalchemy :
pip install flask-sqlalchemy
- 如果連接的是 mysql 數(shù)據(jù)庫(kù),需要安裝 flask-mysqldb或者pymysql 驅(qū)動(dòng)。說(shuō)明:pymysql 是在 Python3.x 版本中用于連接 MySQL 服務(wù)器的一個(gè)庫(kù),Python2中則使mysqldb。
pip install flask-mysqldb #如果flask-mysqldb安裝不上,安裝pymysql
pip install pymysql
- 數(shù)據(jù)庫(kù)連接設(shè)置
格式:mysql://<用戶名>:<密碼>@:<端口>/數(shù)據(jù)庫(kù)名
如果安裝pymysql ,需要這樣連接數(shù)據(jù)庫(kù)
mysql+pymysql://<用戶名>:<密碼>@:<端口>/數(shù)據(jù)庫(kù)名
例如:
# 數(shù)據(jù)庫(kù)鏈接地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test'
# 動(dòng)態(tài)追蹤修改設(shè)置,如未設(shè)置只會(huì)提示警告,此字段會(huì)增加了大量的開(kāi)銷,建議設(shè)置為False
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
#若要查看映射的sql語(yǔ)句,需要如下配置,此功能對(duì)調(diào)試有用,正式環(huán)境建議設(shè)置為False
app.config['SQLALCHEMY_ECHO'] = True
三、SQLAlchemy常用配置
1、sqlalchemy配置信息
2、SQLAlchemy字段類型及對(duì)應(yīng)python中類型
備注:如果使用的是mysql數(shù)據(jù)庫(kù),則數(shù)據(jù)庫(kù)中字段類型和python中數(shù)據(jù)類型對(duì)應(yīng)關(guān)系
3、常用的SQLAlchemy列選項(xiàng)
4、常用的SQLAlchemy關(guān)系選項(xiàng)
四、數(shù)據(jù)庫(kù)基本操作
在Flask-SQLAlchemy中,增刪改查操作,均由數(shù)據(jù)庫(kù)會(huì)話管理。
會(huì)話用 db.session 表示。在準(zhǔn)備把數(shù)據(jù)寫入數(shù)據(jù)庫(kù)前,要先將數(shù)據(jù)添加到會(huì)話中然后調(diào)用 db.session.commit() 方法提交會(huì)話。提交操作把會(huì)話對(duì)象全部寫入數(shù)據(jù)庫(kù)。
在 Flask-SQLAlchemy 中,查詢操作是通過(guò) query 對(duì)象操作數(shù)據(jù)。
最基本的查詢是返回表中所有數(shù)據(jù),可以通過(guò)過(guò)濾器進(jìn)行更精確的數(shù)據(jù)庫(kù)查詢。
1、查詢過(guò)濾器
2、查詢執(zhí)行器方法
3、filter過(guò)濾條件
4、邏輯運(yùn)算
5、DB操作
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-835592.html
五.、完整流程舉例文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-835592.html
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
#設(shè)置連接數(shù)據(jù)庫(kù)的URL
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
#查詢時(shí)會(huì)顯示原始SQL語(yǔ)句
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)
class Role(db.Model):
# 定義表名
__tablename__ = 'roles'
# 定義列對(duì)象
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
us = db.relationship('User', backref='role')
#repr()方法顯示一個(gè)可讀字符串
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, index=True)
email = db.Column(db.String(64),unique=True)
password = db.Column(db.String(64))
role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
def __repr__(self):
return 'User:%s'%self.name
if __name__ == '__main__':
app.run(debug=True)
到了這里,關(guān)于Flask數(shù)據(jù)庫(kù)操作-Flask-SQLAlchemy的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!