开发者

psycopg2, SELECT, and schemas

I'm trying to do a simple select statement on a table that's part of the "dam_vector" schema. The error I get is:

psycopg2.ProgrammingError: relation "dam_vector.parcels_full" does not exist LINE 1: SELECT * FROM "dam_vector.parcels_full"

I can't figure this out and know I'm missing something obvious. Any help you can provide would be great.

Here's the code I'm using. db is a connection string that successfully con开发者_高级运维nects to the database.

cur = db.cursor()
query = 'SELECT * FROM "dam_vector.parcels_full"'
cur.execute(query)
results = cur.fetchall()

and when that failed and after I did some research on Google I tried this. Same error.

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()


Double quotes makes whatever is in them an identifier, so query

SELECT * FROM "dam_vector.parcels_full";

hits table dam_vector.parcels_full (period interpreted as part of table name) from schama public (or anything in search path).

As Adam said, you don't need quotes with names without some special characters. Try:

SELECT * FROM dam_vector.parcels_full;

If you really want to use a double quotes, go for:

SELECT * FROM "dam_vector"."parcels_full";


You shouldn't need the quotes around dam_vector.parcels_full.

Does the output of the following show that a parcels_full table is indeed present?

cur.execute("""SELECT tablename 
                 FROM pg_tables 
                WHERE tablename NOT LIKE ALL (ARRAY['pg_%','sql_%']);""")
cur.fetchall()
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜