flask_sqlalchemy筆記
安裝
可通過 pip安裝:
pip install flask-sqlalchemy
數據庫連接
跟 sqlalchemy 一樣,定義好數據庫連接字符串 DB_URI。
將這個數據庫連接字符串 DB_URI,通過
SQLALCHEMY_DATABASE_URI鍵 添加到 app.config中。示例如下:
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
- 使用
flask_sqlalchemy.SQLAlchemy這個類,傳入app創(chuàng)建 數據庫對象,示例如下:
db = SQLAlchemy(app)
創(chuàng)建 ORM 模型
大致步驟和 sqlalchemy 中創(chuàng)建orm模型一致,只不過 基類 變?yōu)榱?db.Model,數據類型都可以從db下直接獲得,不用再去導入了,示例如下:
# 定義 orm 模型
class User(db.Model):
__tablename__ = 'user' # 表名
# 字段
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(50), nullable=False)
class Article(db.Model):
__tablename__ = 'article'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
title = db.Column(db.String(50), nullable=False)
content = db.Column(db.Text, nullable=False)
uid = db.Column(db.Integer, db.ForeignKey('user.id')) # 外鍵
author = db.relationship('User', backref='articles')
- 在定義模型的時候,如果不指定類屬性
__tablename__,那么在映射的時候會講模型名字的小寫形式作為表的名字,如果在定義名字的時候采用駝峰的形式那么表名用連字符_連接,比如模型名為AllUser,那么表名就為:all_user,如果指定了該屬性,那么表的名字就為指定的值。
將 ORM 模型映射到數據庫
- 使用
db.drop_all()可以刪除數據庫中定義的orm模型有關的表 - 使用
db.create_all()可以創(chuàng)建定義orm模型有關的表
使用 session
通過 db.session來使用session對象,操作和在sqlalchemy中一樣。
查詢數據:
如果只查詢一個模型上的數據,可以使用模型.query的方式查詢,也可以使用db.session.query()來查詢。查詢方式和sqlalchemy中的query使用方式一樣。
例如查詢上面創(chuàng)建對象的數據可以通過下面的例子:
# 查詢數據
users = User.query.all() # 等同于 db.session.query(User).all()
# users = db.session.query(User).all()