SQLAlchemy查询如何添加not逻辑从句?Flask-AppBuilder场景用法咨询
实现方案
首先需从SQLAlchemy导入逻辑运算符函数:
from sqlalchemy import not_, and_, or_
方案1:按要求的NOT+AND转换实现
对应SQL语句 select * from number where not (id<>'1232' and id<>'34343') 的代码写法:
# 请将代码中的Number替换为你自己的模型类名 query_result = self.datamodel.filter( not_( and_( Number.id != '1232', Number.id != '34343' ) ) ).all()
方案2:直接使用OR逻辑实现(更简洁,无需转换)
对应原本OR需求SQL select * from number where id='1232' or id ='34343' 的直接写法:
# 请将代码中的Number替换为你自己的模型类名 query_result = self.datamodel.filter( or_( Number.id == '1232', Number.id == '34343' ) ).all()
补充说明
filter_by()仅支持等值条件,默认用AND拼接,复杂逻辑(不等、OR、NOT等)需要用filter()方法传入SQLAlchemy列表达式实现- 上述写法也兼容直接使用SQLAlchemy Session查询的场景,只需把
self.datamodel.filter替换为db.session.query(Number).filter即可
内容的提问来源于stack exchange,提问作者user504909
相关产品推荐
相关产品推荐

