pyodbc 语法问题'参数太少。预计 2'
Posted
技术标签:
【中文标题】pyodbc 语法问题\'参数太少。预计 2\'【英文标题】:pyodbc Syntax Issue 'Too few parameters. Expected 2'pyodbc 语法问题'参数太少。预计 2' 【发布时间】:2021-07-20 19:27:39 【问题描述】:我在 Overflow 上查看了几个不同的类似示例,但没有找到解决问题的方法。有问题的行似乎如下:
cmd = "'''UPDATE [Python_Test] SET [DB #] = ['123456798'] WHERE Case2 =
['ZZZ00000']'''"
我使用以下命令运行它(当我执行 INSERT pyodbc 命令时,它 100% 有效):
crsr.execute(eval(cmd))
正如标题所暗示的,我不断收到以下错误消息: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] 参数太少。预期为 2. (-3010) (SQLExecDirectW)')
我已经多次看到特殊字符会导致问题,但我相信我已经针对此类问题采取了必要的预防措施,但也许有人会看到我完全错过的一些东西。
如果有人需要任何后续信息,请随时告诉我!
【问题讨论】:
为什么'123456798'
和'ZZZ00000'
周围有括号([]
)?
您在这里看到的大概是我对这段代码的第 10 次迭代。我已经多次打开和关闭括号,只是试图影响某种不同的结果,尽管我知道括号对这些值没有任何影响。所以要回答你的问题,只是我试图强行进入某种类型的答案。请随意忽略它们,因为无论如何结果都不会改变。谢谢!
那甚至不是有效的python。带有嵌入换行符的三重单引号周围的双引号是 SyntaxError。摆脱外部双引号以摆脱 SyntaxError 这也消除了调用 eval(...)
刚刚试了一下。不幸的是仍然有同样的结果。 '参数太少。预计 2 分钟。
【参考方案1】:
如果[DB #]
是数字而[Case2]
是文本,请尝试:
cmd = "UPDATE [Python_Test] SET [DB #] = 123456798 WHERE [Case2] = 'ZZZ00000'"
【讨论】:
这确实是成功的建议!以上是关于pyodbc 语法问题'参数太少。预计 2'的主要内容,如果未能解决你的问题,请参考以下文章
pyodbc.Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] 参数太少。预期为 9. (-3010) (SQLE