【问题标题】:How to join different tables in sqlalchemy query having same column names?如何在具有相同列名的 sqlalchemy 查询中加入不同的表?
【发布时间】:2014-09-27 21:10:50
【问题描述】:

表格说明如下:

License: id, customer_id, product_id, expires_at
Customer: id, name
Product: id, name

我是这样查询的:

result = session.\
            query(License.id, License.customer_id, License.product_id, License.status, License.expires_at,\
                  Customer.name,\
                  Product.name).\
            # some filtering on those columns (JOIN conditions)
            all()

我希望连接表包含:

License.id, Customer.name, Product.name

现在我得到的resultKeyedTuples 的列表。如何从中访问所需的列?例如result[0].name 只给了Customer.name,那么如何得到Product.name 呢?

【问题讨论】:

  • 我希望你得到“sqlalchemy.exc.InvalidRequestError: Ambiguous column name 'name' in result set column descriptions”。至少这是我尝试通过 sqlalchemy RowProxy 访问同名列时得到的结果。

标签: python mysql sql join sqlalchemy


【解决方案1】:

使用label 方法:

Customer.name.label("Customer_name"),\
Product.name.label("Product_name").\

【讨论】:

  • 我可以看到 Sqlalchemy 在查询中自动应用标签,有没有办法通过手动应用标签在结果​​集中获取标签列名
  • @Sudhakar 我不明白,你的意思是没有手动应用标签吗?
  • 如果您有重复的列名,您必须手动更改其中一个,以便您可以同时访问。
  • @Barmer 是的,我想要标记的列,由 Sqlalchemy 在查询 db 时应用。
  • 我还是不明白你在问什么。我自己从未使用过 sqlalchemy,我只是在文档中找到了上述内容。如果您的代码有问题,请发布带有详细信息的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多