Mik*_*nch 1 python sql sqlalchemy
我有一个entities包含name和entity_type列的表,并且想要查找多行测试这两个列的对。在普通的 SQL 中,我可以这样做:
SELECT *
FROM entities
WHERE (name, entity_type) IN (('abc', 'type1'), ('def', 'type2'))
Run Code Online (Sandbox Code Playgroud)
在 SQLAlchemy ORM 中,过滤 WHERE IN 单个列表很简单,例如:
session.query(Entity).filter(User.name.in_(['abc', 'def']))
Run Code Online (Sandbox Code Playgroud)
是否有与顶级 SQL 表达式等效的高效 SQLAlchemy?我不认为它特别相关,但就记录而言,我有兴趣针对 PostgreSQL 运行它。
我认为您正在寻找这样的东西,您可以将其与一些变量名称更改一起使用:
from sqlalchemy import tuple_
session.query(Ent).filter(tuple_(Ent.name, Ent.type).in_(items))
Run Code Online (Sandbox Code Playgroud)
笔记:
1.Item 必须是元组列表
2.这适用于 PostgreSQL,但与 SQLite 中断。
如果您不允许使用,tuple_还有另一种方法。让我知道,我会更新我的答案。