2013-07-15 37 views
1

我使用python 2.7.3和Sqlite3將一些數據保存在一個小數據庫中。我有以下SQL命令:在Sqlite3命令中插入數據庫名稱

thedb = "allpeople" 
cursor.execute("INSERT INTO %s VALUES (?,?,?,?,?,?,?,?,?,?,?,?)" % (thedb, data)) 
conn.commit() 

但它拋出以下錯誤:

TypeError: not all arguments converted during string formatting 
+0

至少,你應該放一個'%r'而不是'%s',否則如果表名包含特殊字符,你會遇到問題。 – michaelmeyer

回答

1

您試圖插入名(而不是數據庫)。你似乎正在混淆SQL參數;字符串模板併爲查詢提供SQL參數是兩個完全獨立的操作。

你不得不使用字符串格式化分別建立查詢字符串:

cursor.execute("INSERT INTO %s VALUES (?,?,?,?,?,?,?,?,?,?,?,?)" % thedb, data) 

或許更清晰一點來說明這是怎麼回事:

query = "INSERT INTO %s VALUES (?,?,?,?,?,?,?,?,?,?,?,?)" % thedb 
cursor.execute(query, data) 

注意,這可以打開一個可能的SQL注入向量。也許你應該看看一個體面的SQL庫,而不是; SQLAlchemy允許您從Python調用(以及其他任務)中構建SQL查詢。

相關問題