Flask使用SQLAlchemy
pip install flask-sqlalchemy
最常用SQLAlchemy列类型
Integer |
int |
普通整数,通常是32位 |
SmallInteger |
int |
取值范围小的整数,通常是16位 |
BigInteger |
int或long |
不限制精度的浮点数 |
Float |
float |
浮点数 |
Numeric |
decimal.Decimal |
定点数 |
String |
str |
变长字符串 |
Text |
str |
变长字符串,对较长或不限宽度的字符串做了优化 |
Unicode |
unicode |
变长Unicode字符串 |
UnicodeText |
unicode |
变长Unicode字符串,对较长或不限宽度的字符串做了优化 |
Boolean |
bool |
布尔值 |
Date |
datetime.date |
日期 |
Time |
datetime.time |
时间 |
Datetime |
datetime.datetime |
日期和时间 |
Interval |
datetime.timedelta |
时间间隔 |
Enum |
str |
一组字符串 |
PickleType |
任何Python对象 |
自动使用Pickle序列化 |
LargeBinary |
str |
二进制blob |
最常用的SQLAlchemy列选项
primary_key |
表的主键 |
unique |
不允许出现重复的值,唯一索引 |
index |
为列创建索引,提升查询效率 |
nullable |
列允许使用空值 |
defaul |
列定义默认值 |
常用的SQLAlchemy关系选项
backref |
在关系的另一个模型中添加反向引用 |
primaryjoin |
明确指定两个模型之间使用的联结条件,只在模棱两可的关系中需要制定 |
lazy |
指定如何加载相关记录,可选值有select(首次访问需要加载)immediate(源对象加载后就加载)joined(加载记录,但使用联结)subquery(立即加载,但使用子查询)noload(永不加载)dynamic(不加载记录,但提供加载记录的查询) |
uselist |
如果设为False,不适用列表而使用标量值 |
order_by |
指定关系记录中的排序方式 |
secondary |
指定多对多关系中关联表的名称 |
secondaryjoin |
sqlalchemy无法自行决定时,指定多对多关系中的二级联结条件 |