开发者

psycopg2, SELECT, and schemas

开发者 https://www.devze.com 2023-02-07 03:55 出处:网络
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:

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

精彩评论

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