Python SQLite3有问题吗?

时间:2010-11-04 15:21:24

标签: python sql sqlite

我目前正在使用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

发生了什么事?

1 个答案:

答案 0 :(得分: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)