python - 如何在 sqlalchemy 中连接两个关于公共(public)关系的查询?

标签 python join sqlalchemy relationship

假设我有两个类 ChildAChildB,它们都与 Parent 有关系。 还假设我已经定义了两个查询,qaqb,它们查询各自的子类。 我想在具有相同的 parent 时将 qb 加入到 qa 中。

如果 parent 只是一个普通的列,我可以执行以下操作:

subquery = qb.subquery()
joined_query = qa.join(subquery, AliasedChildA.parent==subquery.columns.parent)

此处,AliasedChildAChildA 的别名。 (我可以完全控制查询的创建方式,但不能控制稍后应用于它们的过滤器。) 但现在,由于 parent 是一种关系,因此它不包含在 subquery.columns 中。

如果拥有相同的父级,如何加入qaqb

最佳答案

尝试以下操作:

qa = session.query(ChildA)
qb = session.query(ChildB)
# @note: *qa* and *qb* may include other filters etc, 
# but assuming they do not contain joins on *Parent*
subquery = qb.subquery()
qry = qa.join(Parent).join(subquery)

关于python - 如何在 sqlalchemy 中连接两个关于公共(public)关系的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13510394/

相关文章:

mysql - 将两行结果合并为一行 MYSQL

python - 在 Multi-Tenancy 应用程序中动态设置 Flask-SQLAlchemy 数据库连接

python - SqlAlchemy sql.text 提升限制子句

python - 在 dask 中混洗数据

python - 如何随机追加 "Yes/No"(比例为7 :3) to a column in pandas dataframe?

mysql - 从中获取丢失的数据应该是相同的 mysql 表

mysql - MySQL 中的“条件连接”-(条件下的不同连接)

python - SQLalchemy Primaryjoin 属性在 Python 3.4 中不起作用(使用 Python 2.7 起作用)

python - 发送 subprocess.Popen stdout, stderr 到日志记录模块

python - 保存前 django 模型与两个模型的关系