gpt4 book ai didi

python - psycopg2 标识符中的模式名称

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:36 25 4
gpt4 key购买 nike

我想使用 psycopg2 的 sql 子模块来编写干净的动态 SQL:

from psycopg2 import sql
...
cursor.execute(sql.SQL("SELECT * FROM {}").format(sql.Identifier('myschema.mytable'))

这将创建以下查询:

SELECT * FROM "myschema.mytable"

这里我得到一个 Relation "myschema.mytable"not found. 异常。

如何正确处理架构名称?以下语句可行,但我如何使用 psycopg2 创建它们?

SELECT * FROM myschema.mytable
SELECT * FROM myschema."mytable"
SELECT * FROM "myschema"."mytable"

编辑:澄清模式前缀

最佳答案

构造

sql.Identifier('myschema.mytable')

被视为单个 quoted identifier ,从生成的查询中可以看出。您应该将模式和表名作为单独的标识符传递给格式:

cursor.execute(sql.SQL("SELECT * FROM {}.{}").format(
sql.Identifier('myschema'),
sql.Identifier('mytable'))

请注意,模式和表名必须完全匹配,大小写和所有,因为 psycopg2SQL string composition tools产生带引号的标识符,带引号的标识符区分大小写。

关于python - psycopg2 标识符中的模式名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50697030/

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