使用 SQLAlchemy,我可以使用 endswith
方法查询过滤结果:
session.query(MyObject).filter(MyObject.uuid.endswith("z")).all()
与startswith
类似:
session.query(MyObject).filter(MyObject.uuid.startswith("a")).all()
contains
遵循相同的语法:
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()
以及显式调用 .__eq__()
。
但是请注意,is
和 ==
是 not the same in Python 。来自 PEP8:
Comparisons to singletons like
None
should always be done withis
oris not
, never the equality operators
所以,我认为您需要使用 ==
(而不是 __eq__
)来表示非单例,并使用 is_()
来进行比较无
。
可查询属性的完整列表是 here .
关于python - 如何在 SQLAlchemy 中使用过滤运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41494196/