2014-10-17 6 views
1

pyodbc 및 4D에서 작동하는 매개 변수화 된 쿼리를 가져올 수 없습니다. 간단한 코드 예제 (mySQL 데이터베이스 작업). 표 B에는 제한이없는 두 개의 열이 있습니다.4D ODBC 서버를 다룰 ​​때 pyodbc에서 매개 변수를 사용할 수 없습니다.

import pyodbc 

con2 = pyodbc.connect('dsn=CRIPI-4D'); 
cur2 = con2.cursor(); 

KeyMap = { 
    1: ('Aaaahaa',datetime.date(1990,1,1)), 
    2: ('Bcdefgh',datetime.date(1990,2,1)), 
    3: ("Aaaah%'aa",datetime.date(1990,3,1)) 
    }; 

for k in KeyMap: 
    v = (k,KeyMap[k][0]); 
    cur2.execute("INSERT INTO B(Num,Text) VALUES(?,?);",v); 

나는 항상이 오류 메시지가 얻을 :

Traceback (most recent call last): 
File "D:\jlandercy\src\python\cripi\transfert\000_TestInsertParam.py", line 33, in <module> 
cur2.execute("INSERT INTO B(Num,Text) VALUES(?,?);",v); 
pyodbc.ProgrammingError: ('The SQL contains 1 parameter markers, but 2 parameters were supplied', 'HY000') 

을 또는 연결이 실패,하지만 난 SELECT를 발행 할 경우 작동합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까.

+0

어떤 버전의 4d 서버를 사용하고 있습니까? 그리고 ODBC 드라이버의 버전은 무엇입니까? –

답변

0

() 객체를 만드는 대신 매핑을 열거 해 보았습니까?

for k in KeyMap: 
    cur2.execute("INSERT INTO B(Num,Text) VALUES(?,?);",k,KeyMap[k][0]); 
+0

예, 작동하지 않습니다. – jlandercy