当前位置:   article > 正文

flask sqlalchemy基本操作(查询)_sqlalchemy 查询

sqlalchemy 查询

查询语法

查询一般有两种写法,db.session.query 和 <模型类>.query.<过滤方法>

db.session.query:

#查询TestCase 模型类中id = 137 的数据
db.session.query(TestCase).filter(TestCase.id == 137).first() 

<模型类>.query.<过滤方法>

#查询TestCase 模型类中id = 137 的数据 

query2 = TestCase.query.filter(TestCase.id==137).first()

常用的过滤方法

 

常用的查询方法 

常用的查询操作符 

LIKE(模糊查询):

db.session.query(Note).filter(Note.body.like('%foo%'))
   
   
  • 1

IN(包含):

db.session.query(Note).filter(Note.body.in_(['foo', 'bar', 'baz']))
   
   
  • 1

NOT IN(不包含):

db.session.query(Note).filter(~Note.body.in_(['foo', 'bar', 'baz']))
   
   
  • 1

AND(多个过滤条件):


   
   
  1. from sqlalchemy import and_
  2. CaseSuitMiddle.query. filter(and_(CaseSuitMiddle.plan_id == plan_id, CaseSuitMiddle.case_id == tc))
  3. # 或在filter()中加入多个表达式,使用逗号分隔
  4. filter(Note.body == 'foo', Note.title == 'FooBar')
  5. # 或叠加调用多个filter()/filter_by()方法
  6. filter(Note.body == 'foo'). filter(Note.title == 'FooBar')
  • 1

OR:


   
   
  1. from sqlalchemy import or_
  2. filter(or_(Note.body == 'foo', Note.body == 'bar'))
  3. filter()方法相比,filter_by()方法更易于使用:
  4. Note.query.filter_by(body= 'SHAVE').first()
  • 1

count查询

1.


   
   
  1. # 查询Note中title等于测试的数据总数
  2. db.session.query(Note). filter(Note.title== "测试").count()
  • 1

2.进行优化后的func.count()函数: 无子查询,效率高


   
   
  1. from sqlalchemy import func
  2. #统计TestCase 中 run_state 等于pass 的数据总数
  3. case_pass_amount = db.session.query(func.count(TestCase. id)). filter(TestCase.run_state == 'pass').scalar()
  • 1

with_entities()方法 指定某列并去重


   
   
  1. # 查询TestCase模型中test_interface_adree字段,过滤不为None的数据,然后with_entities去重test_interface_adree值
  2. test_interfaces = db.session.query(TestCase.test_interface_adree). filter(
  3. TestCase.test_interface_adree != None).with_entities(
  4. TestCase.test_interface_adree).distinct(). all()
  5. 打印出查询结果:
  6. [( '/organize/organize.organizeTree.do',), ( '/test/addUser',)]
  • 1

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

闽ICP备14008679号