【问题标题】: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 分钟。

标签: python ms-access pyodbc


【解决方案1】:

如果[DB #] 是数字而[Case2] 是文本,请尝试:

cmd = "UPDATE [Python_Test] SET [DB #] = 123456798 WHERE [Case2] = 'ZZZ00000'"

【讨论】:

  • 这确实是成功的建议!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 2015-11-14
相关资源
最近更新 更多