在SQLAlchemy中创建故意空查询的最佳方法是什么?
例如,我有一些构建查询的函数(例如,添加WHERE
子句),在某些时候我知道结果将为空。
创建不返回任何行的查询的最佳方法是什么?像Django的QuerySet.none()
。
答案 0 :(得分:22)
如果您需要正确的返回类型,只需返回session.query(MyObject).filter(sqlalchemy.sql.false())
。
评估时,这仍然会击中数据库,但它应该很快。
如果您没有“查询”的ORM类,您也可以使用false()
:
session.query(sqlalchemy.false()).filter(sqlalchemy.false())
答案 1 :(得分:3)
根据http://www.mail-archive.com/sqlalchemy@googlegroups.com/msg25783.html,截至2011年12月11日,SQLAlchemy中没有EmptyQuery
类型对象。
答案 2 :(得分:2)
db_session(YourModel).query.filter(False)
答案 3 :(得分:0)
使用python的True
布尔文字:
_and(True, some_other_query, True, True)
与以下相同:
some_other_query