2010-11-04 147 views
1

我目前正在用Python學習SQLite3。我在看手冊,它告訴我要做類似如下的事情:Python SQLite3問題?

data = (tablename,) 
c.execute("CREATE TABLE IF NOT EXISTS ?(uid INTEGER PRIMARY KEY, title TEXT NOT NULL, duedate INTEGER NOT NULL, description TEXT, archived INTEGER)", data) 

但是我收到一個錯誤。它的規定如下:

sqlite3.OperationalError: near "?": syntax error 

這是怎麼回事?

回答

3

令人遺憾的是,DB-API的參數替換?不能與表名,列名一起工作......並且它在Python中的所有DB API中都是相同的。

DB-API的參數替換隻適用於像SELECT * FROM table WHERE id = ?那樣的值,因此您必須執行字符串格式化或直接將名稱表放入字符串中。

query = "CREATE TABLE IF NOT EXISTS %s (uid INTEGER PRIMARY KEY, title TEXT NOT NULL, duedate INTEGER NOT NULL, description TEXT, archived INTEGER)" % table_name 

conn.execute(query) 
+0

謝謝你解決了它。我仍然在php mysqli :: stmt->準備心態 – Pwnna 2010-11-04 16:24:50