1

我想使用 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

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

4

1 回答 1

1

所有模式对象的原始 SQL 语句都存储在数据库中(try SELECT sql FROM sqlite_master)。使用这么简单的文本值,不可能记住参数值,因此CREATE xxx语句中不允许使用参数。

于 2014-04-14T09:12:21.963 回答