2011-01-29 5 views
0

"dam_vector"스키마에 포함 된 테이블에서 간단한 select 문을 수행하려고합니다. 내가 얻는 오류는 다음과 같습니다.psycopg2, SELECT 및 스키마

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

나는 이것을 알아낼 수 없으며 분명하지 않은 것을 알고 있습니다. 당신이 제공 할 수있는 도움은 위대합니다.

다음은 내가 사용하고있는 코드입니다. db는 데이터베이스에 성공적으로 연결하는 연결 문자열입니다.

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

그리고 실패한 경우 Google에서 일부 조사를 한 후에이를 시도했습니다. 같은 오류.

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

답변

0

dam_vector.parcels_full 주위에 따옴표가 필요하지 않습니다.

다음 출력은 parcels_full 테이블이 실제로 있음을 보여 줍니까?

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

따옴표 그들에 식별자, 그래서 쿼리

SELECT * FROM "dam_vector.parcels_full"; 

안타 테이블 dam_vector.parcels_full (검색 경로 또는 아무것도) schama public에서 (기간이 테이블 이름의 일부로 해석) 무엇이든한다.

아담이 말했듯이, 특수 문자가없는 이름에는 따옴표가 필요하지 않습니다. 시도 :

SELECT * FROM "dam_vector"."parcels_full"; 
: 당신은 정말 큰 따옴표를 사용하려면

SELECT * FROM dam_vector.parcels_full; 

, 갈