Python 如何在SQLAlchemy中使用筛选器运算符

Python 如何在SQLAlchemy中使用筛选器运算符,python,mysql,sql,sqlalchemy,Python,Mysql,Sql,Sqlalchemy,使用SQLAlchemy,我可以使用endswith方法查询过滤结果: session.query(MyObject).filter(MyObject.uuid.endswith("z")).all() 与startswith类似: session.query(MyObject).filter(MyObject.uuid.startswith("a")).all() 包含的遵循相同的语法: session.query(MyObject).filter(MyObject.uuid.contai

使用SQLAlchemy,我可以使用
endswith
方法查询过滤结果:

session.query(MyObject).filter(MyObject.uuid.endswith("z")).all()
startswith
类似:

session.query(MyObject).filter(MyObject.uuid.startswith("a")).all()
包含的
遵循相同的语法:

session.query(MyObject).filter(MyObject.uuid.contains('c')).all()
我想知道
==
=运算符可以用类似的语法替换。
因此,不是:

 session.query(MyObject).filter(MyObject.uuid=='cfbb4cdb57').all()
可能是这样的:

session.query(MyObject).filter(MyObject.uuid.is('cfbb4cdb57')).all()

.is()
.isnot()
以及显式调用

但是,请注意,
,而
=
是。从PEP8:

应始终使用
is
is not
来比较像
None
这样的单例,而不要使用相等运算符

因此,我认为您应该使用
==
(而不是
\uuuuuueq\uuuuuuu
)来表示非单身,而
是()
来表示与
进行比较


可查询属性的完整列表是。

映射到SQL
is
,因此与相等不同。您可以使用,但这将是一个令人讨厌的问题。这会引发错误:
session.query(MyObject).filter(MyObject.uuid.is_ujd('cfbb4cdb57')).all()
它同时显示
.is(None)
.isnot(None)
作为它们唯一的参数。提供任何其他类型(boolean、string、int)都会导致执行崩溃。我会把它更新得更清楚。看起来怎么样?