【问题标题】:Access all column values of joined tables with SqlAlchemy使用 SqlAlchemy 访问连接表的所有列值
【发布时间】:2020-06-18 17:17:33
【问题描述】:

假设一个有两个 SQL 表

objects_stock
id | number

objects_prop
id | obj_id | color | weight

应该加入objects_stock.id=objects_prop.obj_id,因此普通的 SQL 查询读取

select * from objects_prop join objects_stock on objects_stock.id = objects_prop.obj_id;

如何使用 SqlAlchemy 执行此查询,以便可以访问此连接的所有返回列? 当我执行时

query = session.query(ObjectsStock).join(ObjectsProp, ObjectsStock.id == ObjectsProp.obj_id)
results = query.all()

使用ObjectsStockObjectsProp 适当的映射类,列表results 包含ObjectsStock 类型的对象 - 为什么会这样?访问与两个表的列对应的所有字段的正确 SqlAlchemy 查询是什么?

【问题讨论】:

    标签: python join sqlalchemy


    【解决方案1】:

    以防万一有人遇到类似问题:到目前为止我发现的最好方法是列出要显式获取的列,

    query = session.query(ObjectsStock.id, ObjectsStock.number, ObjectsProp.color, ObjectsProp.weight).\
       select_from(ObjectsStock).join(ObjectsProp, ObjectsStock.id == ObjectsProp.obj_id)
    results = query.all()
    

    然后可以遍历结果并通过原始列名访问属性,例如

    for r in results:
        print(r.id, r.color, r.number)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 2020-07-16
      • 2015-10-26
      • 2021-09-09
      • 1970-01-01
      相关资源
      最近更新 更多