python - 如何在 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()

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 with is or is not , never the equality operators

所以,我认为您需要使用 == (而不是 __eq__)来表示非单例,并使用 is_() 来进行比较

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

关于python - 如何在 SQLAlchemy 中使用过滤运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41494196/

相关文章:

mysql - 是否可以仅将单元格值更新为特定的最大值?

mysql - 多个词的反向匹配

mysql - 连接的 WHERE 和 ON 之间的 SQL 区别

sql - 如何限制gorm预加载的结果

python - 安装 django-autocomplete-light 示例

python - 调整滚动的 Tkinter 文本框的大小

python - 使用 Python 2.7 解析 url() 值的 CSS

java - 如何使用 MyBatis 更新数据库?

sql - ORACLE:查找具有两列(名称如 ID、NUM)的表的 SQL 语法

python - 如何在 Python 3 中将 CSV Writers 与 GZIP 文件一起使用?