好风凭借力,送我上青云。
SQLAlchemy常用数据类型
名称 |
介绍 |
Integer |
整形,映射到数据库中是int类型。 |
Float |
浮点类型,映射到数据库中是float类型。占据的32位 |
Double |
双精度浮点类型,映射到数据库中是double类型。占据64位 |
String |
可变字符类型,映射到数据库中是varchar类型 |
DECIMAL |
定点类型。是专门为了解决浮点类型精度丢失的问题的,使用的时候需要传递两个参数,第一个参数是用来标记这个字段总能能存储多少个数字,第二个参数表示小数点后有多少位。 |
Enum |
枚举类型。指定某个字段只能是枚举中指定的几个值,不能为其他值 |
Boolean |
布尔类型,映射到数据库中的是tinyint类型。 |
Date |
存储时间,只能存储年月日。映射到数据库中是date类型。在Python代码中,可以使用datetime.date 来指定。 |
DateTime |
存储时间,可以存储年月日时分秒毫秒等。映射到数据库中也是datetime类型。在Python代码中,可以使用datetime.datetime 来指定。 |
Time |
存储时间,可以存储时分秒。映射到数据库中也是time类型。在Python代码中,可以使用datetime.time |
Text |
存储长字符串。一般可以存储6W多个字符。 |
LONGTEXT |
长文本类型,映射到数据库中是longtext类型。 |
Column常用参数
名称 |
介绍 |
primary_key |
设置某个字段为主键。 |
autoincrement |
设置这个字段为自动增长的。 |
default |
设置某个字段的默认值。在发表时间这些字段上面经常用。 |
nullable |
指定某个字段是否为空。默认值是True,就是可以为空。 |
unique |
指定某个字段的值是否唯一。默认是False。 |
onupdate |
在数据更新的时候会调用这个参数指定的值或者函数,常用的就是update_time |
name |
指定ORM模型中某个属性映射到表中的字段名。 |
query聚合函数
名称 |
介绍 |
count |
session.query(func.count(Article.id)).first() |
avg |
session.query(func.avg(Article.price)).first() |
max |
session.query(func.max(Article.price)).first() |
min |
session.query(func.min(Article.price)).first() |
sum |
session.query(func.sum(Article.price)).first() |
filter过滤条件
名称 |
介绍 |
equals |
query.filter(User.name == 'ed') |
not equals |
query.filter(User.name != 'ed') |
LIKE |
query.filter(User.name.like('%ed%')) |
ILIKE(不区分大小写) |
query.filter(User.name.ilike('%ed%')) |
IN |
query.filter(User.name.in_(['ed', 'wendy', 'jack'])) |
NOT IN |
query.filter(~User.name.in_(['ed', 'wendy', 'jack'])) |
IS NULL |
query.filter(User.name == None) query.filter(User.name.is_(None)) |
IS NOT NULL |
query.filter(User.name != None) query.filter(User.name.isnot(None)) |
AND |
from sqlalchemy import and_ query.filter(and_(User.name == 'ed', User.fullname == 'Ed Jones')) |
|
query.filter(User.name == 'ed', User.fullname == 'Ed Jones') |
|
query.filter(User.name == 'ed').filter(User.fullname == 'Ed Jones') |
相关参考:https://www.osgeo.cn/sqlalchemy/orm/tutorial.html#common-filter-operators