【问题标题】:How to return all the columns with flask-sqlalchemy query join from two tables如何从两个表中返回带有flask-sqlalchemy查询连接的所有列
【发布时间】:2018-01-11 23:58:16
【问题描述】:

我正在尝试从 flask-sqlalchemy 中的两个表进行连接,我想要两个表中的所有列,但如果我执行:

Company.query.join(Buyer, Buyer.buyer_id == Company.id).all()

我只有来自 Company 的列(它实际上返回一个 Company 对象)。

我知道我可以这样做:

Company.query.join(Buyer, Buyer.buyer_id == Company.id) \
             .add_columns(Buyer.id, Buyer.name, etc..).all()

在这种情况下返回:

(<Company 2>, 1, 'S67FG', etc..)

问题是我有很多列,而且我不知道如何用 flask-marshmallow 将返回的 obj 棉花糖化(嵌套字段不起作用)。

有没有办法用两个表中的列返回一个新的 obj? 对您来说,处理这些情况的最佳方法是什么?

非常感谢任何建议。谢谢

【问题讨论】:

    标签: python sqlalchemy


    【解决方案1】:

    最后我通过使用这个简单的 sqlalchemy 查询实现了这一点:

    db.session.query(Company, Buyer).join(Buyer, Buyer.buyer_id == Company.id).all()
    

    返回:

    (<Company 2>, <Buyer 1, 2>)
    

    【讨论】:

    • Query.add_entity()Query.with_entities() 也可以使用。
    • 我在我的代码中做了类似于@peterpalace。奇怪的是,在文档中很难找到这样一个看似常见的东西,尽管我猜它隐含在绿色框中“如果有多个实体,查询会从什么中选择?”在docs.sqlalchemy.org/en/latest/orm/…。使用add_entity()with_entities() 有优势吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多