2016-09-30 54 views
-2

我需要得到這個程序來存儲數據庫中的人firstname和surname的值。數據庫被稱爲類,我試圖插入數據的表格裏面的表稱爲名稱。 我試圖重新排列這幾次,並從其嘗試循環中刪除它來嘗試診斷問題。提前致謝。我會幫盡我可以:)SQLite-Python「executemany()」沒有執行到數據庫

new_first,new_surname = str(input("Firstname:\t")), str(input("Surname:\t")) 
new_name = [new_surname, new_first] 
print(new_name) 
c.executemany("INSERT INTO Names VALUES (?,?)", new_name) 

該錯誤消息我不斷收到是: 提供綁定的數量不正確。當前的語句使用2,並提供了7。

+2

如果有很多行,那麼每一行必須由一個名和姓值的兩個參數?當你想要爲多組參數執行相同的SQL語句時,可以使用它,但只有一個*。 –

+0

OFCOURSE !!!我其實不知道爲什麼我把它保持爲執行。謝謝! – Ddude

回答

1

不要使用cursor.executemany(),使用cursor.execute()

c.execute("INSERT INTO Names VALUES (?,?)", new_name) 

executemany()應該用於數據的多行,但你只有一個。

該錯誤是由executemany()方法將new_surname作爲一行自行處理引起的,由於字符串是可迭代的,因此嘗試將該字符串中的每個單獨字符用作參數。 7的字符串長度會給你7個參數,並且與SQL語句中的2不匹配。你爲什麼要使用`executemany()`

new_names = [ 
    [new_surname, new_first], 
    ['another surname', 'another first name'], 
    # ... 
] 
c.executemany("INSERT INTO Names VALUES (?,?)", new_names) 
1

executemany()預計很多項目,顧名思義。

這意味着列表或任何類似的數據結構的列表。你只給它一件物品。

new_first, new_surname = str(input("Firstname:\t")), str(input("Surname:\t")) 
new_name = [[new_surname, new_first]] 

c.executemany("INSERT INTO Names VALUES (?,?)", new_name) 

或使用execute如果你只有一個項目

new_first, new_surname = str(input("Firstname:\t")), str(input("Surname:\t")) 
new_name = [new_surname, new_first] 

c.execute("INSERT INTO Names VALUES (?,?)", new_name)