进行联接时如何更改 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_col
是table_A
中的一个字段,我将不胜感激。
谢谢!
【问题讨论】:
【参考方案1】:好的,我想通了。问题是我正在查看 SqlAlchemy 文档,而我确实需要 SqlSoup 文档。
我在这里找到了一个很好的连接示例:http://docs.sqlalchemy.org/en/rel_0_7/orm/extensions/sqlsoup.html
当我尝试按照示例中的说明进行操作时,我会得到所有需要的字段。
【讨论】:
以上是关于进行联接时如何更改 SqlSoup / SqlAlchemy 中的 FROM 子句?的主要内容,如果未能解决你的问题,请参考以下文章