python-SQLAlchemy:联接子查询,没有from字段
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-SQLAlchemy:联接子查询,没有from字段,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1204字,纯文字阅读大概需要2分钟。
内容图文
![python-SQLAlchemy:联接子查询,没有from字段](/upload/InfoBanner/zyjiaocheng/885/40141add56034a7ab0a79fec3f07c65b.jpg)
我有一个名为product_model的表及其相应的ProductModel SQLAlchemy模型.
我希望将product_model表连接到select子查询,该查询仅取消嵌套两个PostgreSQL数组(产品模型ID和数量),然后将product_model表连接到此数据.数据来自一个简单的购物车(python dict).我在这种情况下使用PostgreSQL,但是,如果有更好的主意,我会很乐意使用替代方法.
在SQL中,其外观如下(此语句计算购物车中所有产品的总质量):
SELECT SUM(p.mass * c.quantity) FROM product_model AS p
INNER JOIN (
SELECT UNNEST(ARRAY[1]) AS model_id, UNNEST(ARRAY[2]) AS quantity
) AS c ON p.id = c.model_id
GROUP BY p.id;
我想在SQLAlchemy中对该SQL语句建模.这可能吗?我不确定如何加入未从表中选择的子查询.还是我需要寻找替代品?
解决方法:
不确定您的解决方案有多好,但是以下是使用SQLAlchemy编写SQL查询的方法:
from sqlalchemy.dialects.postgresql import array
# First write the subquery. array() function is used for Pg ARRAY literals.
subq = db.session.query(
db.func.unnest(array([1])).label('model_id'),
db.func.unnest(array([2])).label('quantity')
).subquery()
# Now when you have the subquery, you can use it as if it were a Table object.
q = db.session.query(db.func.sum(ProductModel.mass * subq.c.quantity)). join(subq, ProductModel.id == subq.c.model_id). group_by(ProductModel.id)
内容总结
以上是互联网集市为您收集整理的python-SQLAlchemy:联接子查询,没有from字段全部内容,希望文章能够帮你解决python-SQLAlchemy:联接子查询,没有from字段所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。