在 sqlalchemy 中执行外连接后如何访问列

发布于 2025-01-15 10:40:11 字数 476 浏览 3 评论 0原文

我对两个表进行了外连接。我得到了正确的结果。但我不知道如何访问结果中的列。下面是我的代码。

结果 = db.session.query(Purchase, Product.pr_id).outerjoin(Product, Purchase.id == Product.pr_id).filter(Purchase.user_id==current_user.id, Product.status= =pr_status).order_by(desc(Purchase.cost)).all()

'result[0].Purchase.cost' 给出了第一次购买的成本。但 'result[0].Product.status' 给出 AttributeError: 无法在“Product”列的行中找到列。 为什么会出现这种情况?如何访问“状态”列

I did outerjoin of two tables. And I got the correct result. But I don't know how to access the Columns in the result. Below is my code.

result = db.session.query(Purchase, Product.pr_id).outerjoin(Product, Purchase.id == Product.pr_id).filter(Purchase.user_id==current_user.id, Product.status==pr_status).order_by(desc(Purchase.cost)).all()

'result[0].Purchase.cost' gives me cost of the first purchase. But 'result[0].Product.status' giving AttributeError: Could not locate column in row for column 'Product'.
Why this happen ? How can I access the 'status' column

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暖伴 2025-01-22 10:40:11

db.session.query() 的第二个参数从 Product.pr_id 更改为 Product 应该可以。

result = db.session.query(Purchase, Product).outerjoin(Product, Purchase.id == Product.pr_id).filter(Purchase.user_id==current_user.id, Product.status==pr_status).order_by(desc(Purchase.cost)).all()

这是在 选择- orm-entities-and-attributes] 在示例中

stmt = select(User, Address).join(User.addresses).order_by(User.id, Address.id)

Changing the second argument of db.session.query() from Product.pr_id to Product should work.

result = db.session.query(Purchase, Product).outerjoin(Product, Purchase.id == Product.pr_id).filter(Purchase.user_id==current_user.id, Product.status==pr_status).order_by(desc(Purchase.cost)).all()

This is in the docs at selecting-orm-entities-and-attributes] in the example with

stmt = select(User, Address).join(User.addresses).order_by(User.id, Address.id)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文