2010-11-04 119 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