2016-11-16 3 views
1

MS Access 테이블을 Python을 사용하여 CSV 파일로 저장합니다. MS Access 데이터베이스에는 'Perm_Site Info'라는 테이블이 있습니다. MS Access의 이름에 공백이 있습니다. 아래 스 니펫을 실행하면 코드가 폭발합니다. cursor.execute에서 큰 따옴표뿐만 아니라 큰 따옴표를 사용하려고했지만 열매가 없습니다. 이 문제를 해결하는 방법을 이해하기 위해 친절한 도움을 요청합니다."입력 테이블 또는 쿼리를 찾을 수 없습니다."SELECT 문에 대한 오류

import pyodbc 
import csv 

conn_string = ("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\Access\\permissions.accdb") 

conn = pyodbc.connect(conn_string) 

cursor = conn.cursor() 

cursor.execute("select * from Perm_Site Info;") 

with open('C:\\Desktop\\Python Files\\Perms_Site_Info.csv','wb') as csvfile: 
    writer = csv.writer(csvfile) 
    writer.writerow([i[0] for i in cursor.description]) 
    writer.writerows(cursor) 

cursor.close() 
conn.close() 

print 'All done for now' 

오류 :

cursor.execute("select * from Perm_Site Info;") 
ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC Microsoft Access Driver] The Microsoft Access database engine cannot find the input table or query 'Perm_Site'. Make sure it exists and that its name is spelled correctly. (-1305) (SQLExecDirectW)") 

답변

2

전체 테이블 이름 주위에 괄호를 사용해보십시오. 그것은 공간과 어떻게 해야할지 모르기 때문에 짖고 있습니다.

cursor.execute("select * from [Perm_Site Info];")

+0

감사 X0r, 나는 당신의 제안을 시도하고 지금은 writer.writerows (커서)을 표시하는 오류를 발생 UnicodeEncodeError : '아스키'코덱이 위치 4 문자 U '\의 u2013'를 인코딩 할 수 없습니다 ordinal in range (128) –

+0

OK hmm .. SQL 쿼리를 문자열에 넣은 다음이를 메서드에 전달하십시오. – X0r

+0

저는 Python을 배우고 있습니다. 내가 그걸 어떻게 할 수 있는지 너에게 친절하게 보여 주겠니? –