psycopg2、SELECT 和模式

cds*_*ald 0 python psycopg2

我正在尝试对作为“dam_vector”模式一部分的表执行简单的选择语句。我得到的错误是:

psycopg2.ProgrammingError:关系“dam_vector.parcels_full”不存在第1行:SELECT * FROM“dam_vector.parcels_full”

我无法弄清楚这一点,并且知道我遗漏了一些明显的东西。您能提供的任何帮助都会很棒。

这是我正在使用的代码。db 是成功连接到数据库的连接字符串。

cur = db.cursor()
query = 'SELECT * FROM "dam_vector.parcels_full"'
cur.execute(query)
results = cur.fetchall()
Run Code Online (Sandbox Code Playgroud)

当那失败了,在我对谷歌做了一些研究之后,我尝试了这个。同样的错误。

cur.execute("SET search_path TO dam_vector,public")
db.commit()

cur = db.cursor()
query = 'SELECT * FROM "parcels_full"'
cur.execute(query)
results = cur.fetchall()
Run Code Online (Sandbox Code Playgroud)

小智 5

双引号使它们中的任何内容成为标识符,因此查询

SELECT * FROM "dam_vector.parcels_full";
Run Code Online (Sandbox Code Playgroud)

dam_vector.parcels_full从 schama public(或搜索路径中的任何内容)点击表(句点解释为表名的一部分)。

正如亚当所说,你不需要没有一些特殊字符的名字的引号。尝试:

SELECT * FROM dam_vector.parcels_full;
Run Code Online (Sandbox Code Playgroud)

如果你真的想使用双引号,去:

SELECT * FROM "dam_vector"."parcels_full";
Run Code Online (Sandbox Code Playgroud)