2012-09-12 100 views
1

我有一個非常令人沮喪的問題Python 2.7版的問題sqlite3.Cursor.execute功能

我已經接受光標到sqlite3.Connection對象,然後函數修改數據庫

我的代碼是什麼像這樣:

#DOES NOT WORK 
def update(dbc, tableName, value, value2): 
    dbc.execute("update ? set MyValue = ? where Something = ?;",\ 
    [tableName, value, value2]) 

#WORKS 
def update2(dbc, tableName value, value2): 
    dbc.execute("update {0} set MyValue = {1} where Something = {2};".format(
    tableName, value, value2)) 

db = sqlite3.connect('data.db') 
c = db.cursor() 
c.execute("begin;") 
update(c,"Something","Something Else") #FAILS 
update2(c,"Something","Something Else") #OK 

我得到的錯誤:

sqlite3.OperationalError:近 「?」:語法錯誤

我試過註釋掉第一個execute(「begin;」)語句,因爲我不太瞭解它,但是我知道它會在其他部分顯着加速我的代碼,而不必提交每一個輸入。有沒有人有線索爲什麼會發生這種情況?

+1

好吧,我猜它不適用於表名bleh。解決方案是在這裏:http://stackoverflow.com/questions/228912/sqlite-parameter-substitution-problem –

+1

我看到你是新來的。歡迎。你可以回答你自己的問題,不要把它留下。 – Eduardo

+0

不能再繼續7個小時。我想明天會做。 –

回答

0

數字經過幾小時的搜索後,我在接下來的10分鐘內找到答案。表名不能用這種方式加載......看起來很傻。這裏是一個鏈接到原來的答案:SQLite parameter substitution problem