Python 如何在SQLAlchemy中使用筛选器运算符
使用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
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
)来表示非单身,而是()
来表示与无
进行比较
可查询属性的完整列表是。映射到SQLis
,因此与相等不同。您可以使用,但这将是一个令人讨厌的问题。这会引发错误:session.query(MyObject).filter(MyObject.uuid.is_ujd('cfbb4cdb57')).all()
它同时显示.is(None)
和.isnot(None)
作为它们唯一的参数。提供任何其他类型(boolean、string、int)都会导致执行崩溃。我会把它更新得更清楚。看起来怎么样?