gpt4 book ai didi

python - 执行 flask-SQLAlchemy 子查询

转载 作者:可可西里 更新时间:2023-11-01 07:58:12 26 4
gpt4 key购买 nike

我想在 flask-SQLAlchemy 中执行以下子查询,但不知道如何执行:

SELECT * 
FROM (
SELECT *
FROM `articles`
WHERE publisher_id = "bild"
ORDER BY date_time DESC
LIMIT 10
) AS t
ORDER BY RAND( )
LIMIT 2

我知道我可以将查询构建为:

subq = Article.query.filter(Article.publisher_id =='bild').order_by(Article.date_time.desc()).limit(10).subquery()
qry = subq.select().order_by(func.rand()).limit(2)

但是我不知道如何以与执行示例相同的方式执行它

articles = Article.query.filter(Article.publisher_id =='bild').all()

即获取所有 Article 对象。我能做的就是打电话

db.session.execute(qry).fetchall()

但这只给我一个包含实际行值的列表,而不是我可以在其上调用另一个函数(例如 article.to_json())的对象。

有什么想法吗? qry 是一个 sqlalchemy.sql.selectable.Select 对象,db.session.execute(qry) 是一个 sqlalchemy.engine.result .ResultProxyArticle.query 是一个 flask_sqlalchemy.BaseQuery,我可以在其上调用 all()。谢谢!!

最佳答案

您可以使用 select_entity_from

qry = db.session.query(Article).select_entity_from(subq).order_by(func.rand()).limit(2)

from_self

Article.query.filter(Article.publisher_id =='bild')\
.order_by(Article.date_time.desc())\
.limit(10)\
.from_self()\
.order_by(func.rand())\
.limit(2)

关于python - 执行 flask-SQLAlchemy 子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38999534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com