【问题标题】:Use Common Table Expression with Pony ORM将公用表表达式与 Pony ORM 一起使用
【发布时间】:2020-10-23 18:32:37
【问题描述】:

我有以下包含公用表表达式的查询:

WITH example AS (
    SELECT unnest(ARRAY['foo', 'bar', 'baz']) as col
)
SELECT *
FROM example

尝试在database.select(query) 中使用它会引发pony.orm.dbapiprovider.ProgrammingError: syntax error at or near "WITH",而database.select(raw_sql(query)) 会引发TypeError: expected string or bytes-like object

如何使用带有 ponyorm 的 CTE 选择数据?

【问题讨论】:

    标签: python-3.x postgresql psycopg2 ponyorm


    【解决方案1】:

    要使用包含 CTE 的查询,请在数据库上调用 execute 函数并使用返回的游标获取行:

    cursor = database.execute("""
        WITH example AS (
            SELECT unnest(ARRAY['foo', 'bar', 'baz']) as col
        )
        SELECT *
        FROM example
    """)
    rows = cursor.fetchall()
    

    注意:游标是来自psycopg2 的类,因此虽然此解决方案确实使用了小马库,但解决方案可能会因所使用的数据库而异。

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 2016-12-29
      • 1970-01-01
      • 2011-06-19
      • 2012-06-23
      相关资源
      最近更新 更多