如何在sqlalchemy查询中连接具有相同列名的不同表?

San*_*ram 7 python mysql sql join sqlalchemy

表的描述是:

License: id, customer_id, product_id, expires_at
Customer: id, name
Product: id, name
Run Code Online (Sandbox Code Playgroud)

我这样查询:

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()
Run Code Online (Sandbox Code Playgroud)

我希望连接表包含:

License.id, Customer.name, Product.name
Run Code Online (Sandbox Code Playgroud)

现在result我得到的是一份清单KeyedTuples.如何从这些列中访问所需的列?例如result[0].name只给出Customer.name,然后如何获得Product.name

Bar*_*mar 7

使用label方法:

Customer.name.label("Customer_name"),\
Product.name.label("Product_name").\
Run Code Online (Sandbox Code Playgroud)

  • 这会强制您在 select 语句中声明字段。如果您使用的是 SELECT *,那么这意味着现在您需要将所有单独的字段添加到查询中,这远非理想。如果有一种方法可以使用表前缀通过 RowProxy 访问它们,那就更好了。 (3认同)
  • 正如我所看到的,Sqlalchemy 自动在查询中应用标签,有没有办法通过手动应用标签来获取结果集中的标记列名称 (2认同)