【SQLAlchemy】02-SQLAlchemy数据类型和参数

好风凭借力,送我上青云。

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

原文地址:https://www.cnblogs.com/ydongy/p/13157899.html