我想使用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
为什么?我尝试的是什么?
答案 0 :(得分:1)
所有架构对象的原始SQL语句都存储在数据库中(try SELECT sql FROM sqlite_master
)。
使用这样一个简单的文本值,就无法记住参数值,因此CREATE xxx
语句中不允许使用参数。