如何在SQLAlchemy中使用过滤器运算符

时间:2017-01-05 20:34:50

标签: 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()

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()

1 个答案:

答案 0 :(得分:1)

.is_().isnot()以及明确调用.__eq__()

但请注意,is==not the same in Python。来自PEP8:

  

None等单身人士的比较应该始终使用isis not,而不是等同运算符

所以,我认为您希望==(不是__eq__)用于非单身人士,is_()用于与None进行比较。

所谓的可查询属性的完整列表是here