2014-02-24 42 views
5

我似乎無法弄清楚什麼是錯我的代碼,但我不斷收到:錯誤綁定參數0:可能不支持的類型

error "binding parameter 0 - probably unsupported type". 

這裏是我的代碼:

last = 'EBERT' 

sakila = connect("sakila.db") 
res = sakila.execute("SELECT first_name, last_name FROM customer WHERE last_name = ?",[(last,)]) 

for row in res: 
    print(row) 

當我有它'EBERT'在查詢中,並沒有設置爲一個變量,它工作正常,所以我知道這是一個元組語法或什麼的問題。我已經嘗試過沒有括號,第二個變量爲first_name,有和沒有單獨定義的遊標,基本上我可以想到的每種方法,並且我已經研究了幾個小時,但沒有得到任何幫助,所以任何幫助將是超級讚賞。

+1

的線條和縮進在我的代碼順便說一句,它只是在帖子裏搞砸了。 – user3345626

+0

另外我不能得到fetchall的東西工作。我有res.fetchall()但它只給了我一個空的列表,我不知道爲什麼 – user3345626

回答

2

嵌套列表,元組用於executemany,而不是execute

傳遞contians參數的平面列表(或元組)。

res = sakila.execute(
    "SELECT first_name, last_name FROM customer WHERE last_name = ?", 
    (last,)) 

res = sakila.execute(
    "SELECT first_name, last_name FROM customer WHERE last_name = ?", 
    [last]) 
+0

謝謝!這很好。你知道如何工作fetchall(),這樣res.fetchall()不會創建一個空列表嗎? – user3345626

+0

@ user3345626,歡迎來到Stack Overflow!如果這對你有幫助,你可以通過接受答案告訴社區(http://meta.stackexchange.com/a/5235)。 – falsetru

+0

@ user3345626,你在迭代'res'後調用了'fetchall'嗎?一旦它被迭代,它就會被剔除。您需要再次執行查詢。只需刪除'for'循環就能解決你的問題。 – falsetru

1

我得到了同樣的錯誤,整理出我的數據類型是不匹配的。然後我將它轉換成字符串;

cursor.execute('''INSERT INTO employees VALUES (?);''', (str(data[0]),)) 

它工作得很好。希望這會對某人有所幫助。

0

解析度= sakila.execute( '' 'SELECT名字,姓氏從客戶WHERE姓氏= {0}' ''。格式(最後))

這個工作對我來說

相關問題