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
创建 数据库对象,示例如下:
db = SQLAlchemy(app)
创建 ORM 模型
大致步骤和 sqlalchemy 中创建orm模型一致,只不过 基类 变为了 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()
可以创建定义orm模型有关的表
使用 session
通过 db.session
来使用session对象,操作和在sqlalchemy中一样。
查询数据:
如果只查询一个模型上的数据,可以使用模型.query
的方式查询,也可以使用db.session.query()
来查询。查询方式和sqlalchemy
中的query
使用方式一样。
例如查询上面创建对象的数据可以通过下面的例子:
# 查询数据
users = User.query.all() # 等同于 db.session.query(User).all()
# users = db.session.query(User).all()
网友评论