我目前正在使用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
发生了什么事?
答案 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)