首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >psycopg2、SELECT和架构

psycopg2、SELECT和架构
EN

Stack Overflow用户
提问于 2011-01-29 06:12:28
回答 2查看 11.7K关注 0票数 0

我试图在表上执行一个简单的select语句,该语句是"dam_vector“模式的一部分。我得到的错误是:

psycopg2.ProgrammingError:关系"dam_vector.parcels_full“不存在,第1行:从"dam_vector.parcels_full”中选择*

我搞不清楚我错过了什么明显的东西。你能提供的任何帮助都是很棒的。

这是我用的密码。db是成功连接到数据库的连接字符串。

代码语言:javascript
复制
cur = db.cursor()
query = 'SELECT * FROM "dam_vector.parcels_full"'
cur.execute(query)
results = cur.fetchall()

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

代码语言:javascript
复制
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()
EN

回答 2

Stack Overflow用户

发布于 2011-03-09 13:12:08

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

代码语言:javascript
复制
SELECT * FROM "dam_vector.parcels_full";

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

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

代码语言:javascript
复制
SELECT * FROM dam_vector.parcels_full;

如果您真的想使用双引号,请选择:

代码语言:javascript
复制
SELECT * FROM "dam_vector"."parcels_full";
票数 5
EN

Stack Overflow用户

发布于 2011-01-29 07:05:29

你不应该需要关于dam_vector.parcels_full的引号。

下面的输出是否显示确实存在一个parcels_full表?

代码语言:javascript
复制
cur.execute("""SELECT tablename 
                 FROM pg_tables 
                WHERE tablename NOT LIKE ALL (ARRAY['pg_%','sql_%']);""")
cur.fetchall()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4835477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档