SQLAlchemy的ORM(2)
Column常用参数:
-
default
:默认值。 -
nullable
:是否可空。 -
primary_key
:是否为主键。 -
unique
:是否唯一。 -
autoincrement
:是否自动增长。 -
onupdate
:更新的时候执行的函数。 -
name
:该属性在数据库中的字段映射。
sqlalchemy常用数据类型:
-
Integer
:整形。 -
Float
:浮点类型。 -
Boolean
:传递True/False
进去。 -
DECIMAL
:定点类型。 -
enum
:枚举类型。 -
Date
:传递datetime.date()
进去。 -
DateTime
:传递datetime.datetime()
进去。 -
Time
:传递datetime.time()
进去。 -
String
:字符类型,使用时需要指定长度,区别于Text
类型。 -
Text
:文本类型。 -
LONGTEXT
:长文本类型。
MySQL TEXT数据类型的最大长度
TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB
query可用参数:
- 模型对象。指定查找这个模型中所有的对象。
- 模型中的属性。可以指定只查找某个模型的其中几个属性。
- 聚合函数。
-
func.count
:统计行的数量。 -
func.avg
:求平均值。 -
func.max
:求最大值。 -
func.min
:求最小值。 -
func.sum
:求和。
-
过滤条件:
过滤是数据提取的一个很重要的功能,以下对一些常用的过滤条件进行解释,并且这些过滤条件都是只能通过filter
方法实现的:
-
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'))