2015-01-15 3 views
2

Pyodbc를 사용 중이며 Microsoft 2013 Access Database에 값을 삽입하려고합니다. 그러나 코드를 실행할 때마다 실행 줄에 오류가 발생합니다.Pyodbc를 사용하여 Access 2013에 삽입 할 때 구문 오류가 발생했습니다.

pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement. (-3502) (SQLExecDirectW)') 

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 나는 아래에 나의 코드를 넣었다. 이름에 공백이

conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\Database2.accdb;") 
cur=conn.cursor() 
sql="""INSERT INTO Invoices (LINE TYPE,INVOICE NUMBER) VALUES (?,?)""" 
cur.execute(sql,("Line","41243")) 

답변

3

열 괄호로 둘러싸인해야 : 당신이 테이블 디자인을 제어 할 수있는 경우

sql="""INSERT INTO Invoices ([LINE TYPE],[INVOICE NUMBER]) VALUES (?,?)""" 

, 나는 열 이름에서 공백을 제거 생각 하는데요, 그들을 대체 밑줄 (LINE_TYPE) 또는 파스칼 케이스 (LineType)를 사용하십시오.

2

구문 오류가 SQL에 있습니다

INSERT INTO Invoices (LINE TYPE,INVOICE NUMBER) VALUES (?,?) 

난 당신이 이름이 특별히 열 이름을 구분하지 않고 공백이 포함 된 열을 참조 할 수있는 DBMS가 발생할 아직했습니다. Access SQL에서 as in SQL Server, 사용되는 구분 기호는 대괄호입니다. 그래서 당신은 작성해야 :

INSERT INTO Invoices ([LINE TYPE], [INVOICE NUMBER]) VALUES (?,?) 

표준 SQL 따옴표를 사용하지만, 대부분의 업체들은 특히 표준에 부합 대해 방해하지 않습니다. 참고 사항 : SQL standard to escape column names?