进行联接时如何更改 SqlSoup / SqlAlchemy 中的 FROM 子句?

Posted

技术标签:

【中文标题】进行联接时如何更改 SqlSoup / SqlAlchemy 中的 FROM 子句?【英文标题】:How to change the FROM clause in SqlSoup / SqlAlchemy when doing a join? 【发布时间】:2012-08-23 04:14:30 【问题描述】:

我希望能够进行联接并从结果中的两个表中取回特定字段。

我正在做以下事情:

from sqlalchemy import or_, and_, desc
from sqlalchemy.ext.sqlsoup import SqlSoup

db = SqlSoup('mysql://localhost/mydb')

join = (db.table_B, db.table_B.id==db.table_A.id)

query = db.table_A.join(join)

for entry in query:
    print entry

对于每个结果,entry 包含table_B 的所有字段,但没有提供table_A 的任何字段。我意识到默认情况下会发生这种情况,因为字段名称不明确。但是,我想手动指定 FROM 子句来覆盖此行为。我查看了文档,更改 FROM 子句似乎并非易事。我一直没能成功。

如果有人可以建议我可以对上述代码进行正确修改以获取entry.my_col,其中my_coltable_A 中的一个字段,我将不胜感激。

谢谢!

【问题讨论】:

【参考方案1】:

好的,我想通了。问题是我正在查看 SqlAlchemy 文档,而我确实需要 SqlSoup 文档。

我在这里找到了一个很好的连接示例:http://docs.sqlalchemy.org/en/rel_0_7/orm/extensions/sqlsoup.html

当我尝试按照示例中的说明进行操作时,我会得到所有需要的字段。

【讨论】:

以上是关于进行联接时如何更改 SqlSoup / SqlAlchemy 中的 FROM 子句?的主要内容,如果未能解决你的问题,请参考以下文章

sqlsoup 插入 忽略

如何在employee_id上 进行内部联接时获取每个唯一员工的销售总额

更改生成的联接表的名称(多对多)-EF Core 5

C联接指向数组的指针

特定列上的SQL内部联接

查找内部联接的最大值 - SQL