SQLAlchemy的ORM(2)
Column常用参数:
default
:默认值。server_default
:数据库默认值,只接收字符串。设置该值后,可配置到数据库中。nullable
:是否可空。primary_key
:是否为主键。unique
:是否唯一。autoincrement
:是否自动增长。onupdate
:更新的时候执行的函数。-
sqlalchemy常用数据类型:
Integer
:整形。Float
:浮点类型。Boolean
:传递True/False
进去。DECIMAL
:定点类型。enum
:枚举类型。Date
:传递datetime.date()
进去。DateTime
:传递datetime.datetime()
进去。Time
:传递datetime.time()
进去。String
:字符类型,使用时需要指定长度,区别于Text
类型。Text
:文本类型。LONGTEXT
:长文本类型。query可用参数:
- 模型对象。指定查找这个模型中所有的对象。
- 模型中的属性。可以指定只查找某个模型的其中几个属性。
聚合函数。
equals
:query.filter(User.name == 'ed')
not equals
:query.filter(User.name != 'ed')
like
:query.filter(User.name.like('%ed%'))
in
:query.filter(User.name.in_(['ed','wendy','jack']))
# 同时,in也可以作用于一个Query
query.filter(User.name.in_(session.query(User.name).filter(User.name.like('%ed%'))))
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')
# 或者是通过多次filter操作
query.filter(User.name=='ed').filter(User.fullname=='Ed Jones')
or
:from sqlalchemy import or_ query.filter(or_(User.name=='ed',User.name=='wendy'))