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

参数太少。预计 1 个 CSV 导入

MS Access SQL 参数太少。预计 4

访问 INSERT INTO - 几个参数。预计 2

更新语句Java sql异常:期望的参数太少

Pyodbc - 使用 WHERE 子句运行 SQL 查询(语法错误)