我想使用python执行CREATE STATEMENT子句,使用参数替换为?(这样我就可以安全地从python类型中指定默认值)。

它似乎不起作用,尽管当我在select或类似语句中使用参数化语句时,它可以正常工作。例如:

正如预期的那样:

>>> list(sqlite3.connect('sensemap.sql3').cursor().execute('select ?', (101,)))
[(101,)]

意料之外:

>>> sqlite3.connect('sensemap.sql3').cursor().execute('create table mytable (mycolumn default ?)', (101,))
Traceback (most recent call last):
  File "<console>", line 1, in <module>
OperationalError: near "?": syntax error

这是为什么?我所尝试的可能吗?

有帮助吗?

解决方案

所有模式对象的原始SQL语句都存储在数据库中(尝试 SELECT sql FROM sqlite_master).有了这样一个简单的文本值,就不可能记住参数值,所以参数是不允许在 CREATE xxx 发言。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top