我想使用psycopg2的sql子模块编写干净的动态SQL语句:
这会创建以下查询:
from psycopg2 import sql
...
cursor.execute(sql.SQL("SELECT * FROM {}").format(sql.Identifier('myschema.mytable'))
这会创建以下查询:
SELECT * FROM "myschema.mytable"
在这里,我遇到了一个异常:关系“myschema.mytable”未找到。
我该如何正确处理模式名称?以下语句可行,但我应该如何使用psycopg2创建它们?
SELECT * FROM myschema.mytable
SELECT * FROM myschema."mytable"
SELECT * FROM "myschema"."mytable"
编辑:澄清模式前缀
SELECT * FROM mytable;
可以正常工作,而SELECT * FROM "mytable";
会出错。我必须补充说明的是,mytable包含一个模式前缀,这可能是问题的原因。 - Max