我试图在表上执行一个简单的select语句,该语句是"dam_vector“模式的一部分。我得到的错误是:
psycopg2.ProgrammingError:关系"dam_vector.parcels_full“不存在,第1行:从"dam_vector.parcels_full”中选择*
我搞不清楚我错过了什么明显的东西。你能提供的任何帮助都是很棒的。
这是我用的密码。db是成功连接到数据库的连接字符串。
cur = db.cursor()
query = 'SELECT * FROM "dam_vector.parcels_full"'
cur.execute(query)
results = cur.fetchall()当这一切失败之后,在我对谷歌做了一些研究之后,我尝试了这个。同样的错误。
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()发布于 2011-03-09 13:12:08
双引号使它们中的任何内容都成为标识符,所以查询
SELECT * FROM "dam_vector.parcels_full";从schama dam_vector.parcels_full (或搜索路径中的任何内容)命中表public (句点解释为表名的一部分)。
正如亚当所说,你不需要没有特殊字符的名字引号。尝试:
SELECT * FROM dam_vector.parcels_full;如果您真的想使用双引号,请选择:
SELECT * FROM "dam_vector"."parcels_full";发布于 2011-01-29 07:05:29
你不应该需要关于dam_vector.parcels_full的引号。
下面的输出是否显示确实存在一个parcels_full表?
cur.execute("""SELECT tablename
FROM pg_tables
WHERE tablename NOT LIKE ALL (ARRAY['pg_%','sql_%']);""")
cur.fetchall()https://stackoverflow.com/questions/4835477
复制相似问题