Flask 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%'))

IN(包含):

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

NOT IN(不包含):

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

AND(多个过滤条件):

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

OR:

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

count查询

  1. 查询Note中title等于测试的数据总数

    db.session.query(Note).filter(Note.title== "测试").count()

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

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

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

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

————————————————
版权声明:本文为CSDN博主「知了带来了夏天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wyw875960418/article/details/120350433

你可能感兴趣的:(Flask sqlalchemy基本操作(查询))