2012-10-23 100 views
3

我有一個稱爲test的MySQL存儲過程,它接受一個參數。 我可以從python的2.7倍用下面的代碼在python中調用存儲過程時出錯 - 使用MySQLdb

data='Teststr' 
cur = db.cursor() 
cur.execute("CALL test('{0}')".format(data)) 

執行存儲過程但是當我使用

data='Teststr' 
cur = db.cursor() 
cur.callproc('test',data) 

我遇到

OperationalError: (1318, 'Incorrect number of arguments for PROCEDURE MyDb.test; expected 1, got 7')

看起來像蟒蛇對待每一個字符作爲一個參數。我在這裏錯過了什麼?

回答

7

你想cur.callproc('test', (data,))通過1元

例如一個元組:

>>> a = 'hello' 
>>> len(a) # just a 
5 
>>> len((a)) # still just a 
5 
>>> len((a,)) # single element tuple containing a 
1 
+0

+1它的工作原理和感謝。我浪費了我一個小時的時間:)。 –

相關問題