3.3 SQLAlchemy的参数

2019-08-19  本文已影响0人  yungege

SQLAlchemy的ORM(2)

Column常用参数:

sqlalchemy常用数据类型:

MySQL TEXT数据类型的最大长度

TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB

query可用参数:

  1. 模型对象。指定查找这个模型中所有的对象。
  2. 模型中的属性。可以指定只查找某个模型的其中几个属性。
  3. 聚合函数。
    • func.count:统计行的数量。
    • func.avg:求平均值。
    • func.max:求最大值。
    • func.min:求最小值。
    • func.sum:求和。

过滤条件:

过滤是数据提取的一个很重要的功能,以下对一些常用的过滤条件进行解释,并且这些过滤条件都是只能通过filter方法实现的:

  1. equals

    query.filter(User.name == 'ed')
    
  2. not equals:

    query.filter(User.name != 'ed')
    
  3. like

    query.filter(User.name.like('%ed%'))
    
  4. 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%'))))
    
  5. not in

    query.filter(~User.name.in_(['ed','wendy','jack']))
    
  6. is null

    query.filter(User.name==None)
    # 或者是
    query.filter(User.name.is_(None))
    
  7. is not null:

    query.filter(User.name != None)
    # 或者是
    query.filter(User.name.isnot(None))
    
  8. 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')
    
  9. or

    from sqlalchemy import or_  query.filter(or_(User.name=='ed',User.name=='wendy'))
    
上一篇下一篇

猜你喜欢

热点阅读