相关疑难解决方法(0)

SQLite:为什么不能使用参数来设置标识符?

我正在重构一个小项目以使用 SQLite 而不是 python 数据结构,以便我可以学习 SQLite。我一直在使用的数据结构是一个字典列表,其中每个字典的键代表一个菜单项的属性。最终,这些键应该成为 SQLite 表中的列。

我首先想到我可以通过创建单列表、迭代字典键列表并执行 , 命令来以编程方式创建表ALTER TABLEADD COLUMN如下所示:

# Various import statements and initializations

conn = sqlite3.connect(database_filename)
cursor = conn.cursor()
cursor.execute("CREATE TABLE menu_items (item_id text)")

# Here's the problem:
cursor.executemany("ALTER TABLE menu_items ADD COLUMN ? ?", [(key, type(value)) for key, value in menu_data[0].iteritems()])
Run Code Online (Sandbox Code Playgroud)

经过更多阅读后,我意识到参数不能用于标识符,只能用于文字值。PyMOTWsqlite3

查询参数可与selectinsertupdate语句一起使用。它们可以出现在查询中文字值合法的任何部分。

克赖比奇在第 14 页上说。使用 SQLite的 135 (ISBN 9780596521189):

但请注意,参数只能用于替换文字值,例如带引号的字符串或数值。参数不能用来代替标识符,例如表名或列名。以下 SQL 部分无效:

SELECT * FROM ?; …
Run Code Online (Sandbox Code Playgroud)

python sqlite

4
推荐指数
1
解决办法
892
查看次数

标签 统计

python ×1

sqlite ×1