我正在尝试user_version通过Python 2.6 更改SQLite数据库,我尝试执行以下操作:
cur.execute( "PRAGMA user_version = ?" , (version,) )
Run Code Online (Sandbox Code Playgroud)
它失败并出现以下错误:
cur.execute( "PRAGMA user_version = ?" , (version,) )
sqlite3.OperationalError: near "?": syntax error
Run Code Online (Sandbox Code Playgroud)
我已经尝试了命名的替换样式(而不是问号),但也失败了同样的错误.
如果我在那里删除一个数字作为SQL字符串的一部分或使用Python的字符串操作它一切正常,但我宁愿不做其中任何一个.
那么为什么这不起作用呢?
如何安全地将变量中的数字插入到此调用中?
仅某些值可以参数化。甚至表名和列名也无法参数化。您的实验表明,不能对参数值进行参数化。
在user_version被预期为整数。您可以使用字符串格式设置并同时保护自己
cur.execute( "PRAGMA user_version = {v:d}".format(v=version) )
Run Code Online (Sandbox Code Playgroud)
{v:d}如果version不是整数,则格式将引发ValueError 。
| 归档时间: |
|
| 查看次数: |
1665 次 |
| 最近记录: |