2014-10-17 15 views
1

我無法使用pyodbc和4D獲取參數化查詢。這裏有一個簡單和基本代碼的示例(在mySQL數據庫上工作)。表B有兩列沒有任何約束。使用pyodbc處理4D ODBC服務器時無法使用參數

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驅動程序? – 2016-02-27 03:38:00

回答

0

你試過枚舉映射而不是使()對象?

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

是的,它也不起作用。 – jlandercy 2015-01-02 11:24:23

相關問題