gpt4 book ai didi

python - 使用 sqlalchemy 的 row_to_json 语法

转载 作者:行者123 更新时间:2023-11-28 16:25:39 24 4
gpt4 key购买 nike

我想弄清楚如何将 Postgres 的 (9.2) row_to_json 与 SqlAlchemy 一起使用。然而,我还没有想出任何有效的语法。

details_foo_row_q = select([Foo.*]
).where(Foo.bar_id == Bar.id
).alias('details_foo_row_q')

details_foo_q = select([
func.row_to_json(details_foo_row_q).label('details')
]).where(details_foo_row_q.c.bar_id == Bar.id
).alias('details_foo_q')

理想情况下,如果可能的话,我希望不必从表模型中键入每个字段。

从'mn'得到答案:

应该是这样的:

details_foo_row_q = select([Foo]).where(Foo.bar_id == Bar.id).alias('details_foo_row_q')

details_foo_q = select([
func.row_to_json(literal_column(details_foo_row_q.name)).label('details')
]).select_from(details_foo_row_q).where(
details_foo_row_q.c.bar_id == Bar.id
).alias('details_foo_q')

谢谢 mn,效果很好!

最佳答案

您的查询生成了不正确的 SQL

SELECT row_to_json(SELECT ... FROM foo) AS details
FROM (SELECT ... FROM foo) AS details_foo_row_q

应该是

SELECT row_to_json(details_foo_row_q) AS details
FROM (SELECT ... FROM foo) AS details_foo_row_q

您需要使用 select as literal_column

from sqlalchemy.sql.expression import literal_column

details_foo_q = select([
func.row_to_json(literal_column(details_foo_row_q.name)).label('details')
]).select_from(details_foo_row_q).where(
details_foo_row_q.c.bar_id == Bar.id
).alias('details_foo_q')

关于python - 使用 sqlalchemy 的 row_to_json 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37010083/

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