Lon*_*Dev 6 python sql sqlalchemy
我正在尝试WHERE EXISTS在 SQLAlchemy 中执行一个子句。SQL 看起来像这样:
SELECT
id, title
FROM
package AS package1
WHERE
EXISTS (
SELECT
title
FROM
package as package2
WHERE
package1.id <> package2.id AND
package1.title = package2.title
)
ORDER BY
title DESC;
Run Code Online (Sandbox Code Playgroud)
是否可以在不使用原始 SQL 的情况下在 SQLAlchemy 中执行此操作?我试过这个,但它似乎没有返回正确的结果:
t = model.Session.query(
model.Package.id,
model.Package.title
).subquery('t')
package = model.Session.query(
model.Package.title
).filter(
model.Package.id != t.c.id,
model.Package.title == t.c.title
)
Run Code Online (Sandbox Code Playgroud)
使用sqlalchemy.orm.aliased()和exists():
from sqlalchemy.orm import aliased
package_alias = aliased(Package)
session.query(Package.id, Package.title) \
.filter(session.query(package_alias.title) \
.filter(Package.id != package_alias.id) \
.filter(Package.title == package_alias.title) \
.exists()) \
.order_by(Package.title.desc())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4315 次 |
| 最近记录: |