当前位置:   article > 正文

Flask-SQLAlchemy常用方法_flask_sqlalchemy 返回所有字段

flask_sqlalchemy 返回所有字段

1.  常用查询方法

(1)all()方法返回所有记录

Role.query.all()

(2)first()返回第一条记录,没有返回None
        first_or_404()返回第一个条记录,没有返回404错误响应

  1. Role.query.first()
  2. Role.query.first_or_404()

(3)get()返回指定主键值(id字段)的记录,没有返回None
         get_or_404返回指定主键值(id字段)的记录,没有返回404错误响应

  1. Role.query.get(1)
  2. Role.query.get_or_404(1)

(4)count()返回记录的数量

Role.query.count()

(5)paginate()返回一个Pagination对象,可以对记录进行分页处理

  1. Role.query.order_by(Role.id.desc()).paginate(page, per_page)
  2. # page:当前页
  3. # per_page:每页记录数

返回的Pagination对象的常用方法有这些:


2. 常用过滤方法

(1)filter()使用指定的规则过滤记录,返回新产生的BaseQuery对象

  1. Role.query.filter(Rolee.data =='mayajun').first()
  2. # 除了‘==’和'!='外,其他常用操作符 like、in_、notin、and_、or_等
  3. like:
  4. filter(Role.data.like('%ma%'))
  5. in_:
  6. Role.query.filter(Role.data.in_(["马亚南", "mayaju"]))
  7. notin:
  8. Role.query.filter(Role.data.not_in(["mayajun", "mayaqiang"]))
  9. and_:
  10. from sqlalchemy import and_
  11. Role.query.filter(and_(Role.id>=1, Role.data.like("%ma%")))
  12. 或者:多个表达式中间用逗号隔开
  13. Role.query.filter(Role.id>=1, Role.data.like("%马%"))
  14. 或者:调用多个filter
  15. Role.query.filter(Role.id>=1).filter(Role.data.like("%马%"))
  16. or_:
  17. from sqlalchemy import or_
  18. Role.query.filter(or_(Role.id==1, Role.data=="马亚南"))

(2)filter_by()使用指定规则过滤记录(以关键字表达式的形式),返回新产生的BaseQuery对象

Role.query.filter_by(data="mayajun").first()

(3)order_by()根据指定规则排序

Role.query.filter_by(data="mayajun").order_by(Role.id.desc()).all()

(4)limit(limit)根据指定的值限制查询数量

Role.query.order_by(Role.id.desc()).limit(2).all()

(5)group_by()根据条件对记录进行分组

   )1. 直接分组

 Role.query.with_entities(Role.data, func.count("*")).group_by(Role.data).all()

输出结果:   [('mayajun', 2), ('mayaqiang', 1), ('fadsafsd', 1), ('fdasfad', 1)] 

   )2. 过滤之后再分组 

Role.query.with_entities(Role.data, func.count("*")).filter(Role.data.like("%ma%")).group_by(Role.data).all()

输出结果:[('mayajun', 2), ('mayaqiang', 1)]

  )3.  过滤之后再分组,分组之后再过滤

  1. nums = func.count("*")
  2. Role.query.with_entities(Role.data, nums).filter(Role.data.like("%ma%")).group_by(Role.data).having(nums>1).all()

  输出结果:  [('mayajun', 2)]

(6)offset(offset)根据指定偏移量查询结果

 Role.query.offset(2).all()

(7)随机查询3个记录

Role.query.order_by(func.random()).limit(3).all()

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/510762
推荐阅读
相关标签
  

闽ICP备14008679号