在这里和网络上进行了长时间的搜索,似乎找不到任何示例来解释为什么我在以下内容中遇到语法错误: 导入 win32com.client
`
PregCode = recordsetraw.Fields.Item("PregnancyCode").value
SQL = "INSERT INTO UniqueData SELECT * FROM Rawdata WHERE PregnancyCode =%s"
params = (PregCode)
connection.execute(SQL, params)
print PregCode
recordsetraw.MoveNext()`
我收到以下错误:
回溯(最近一次调用最后一次): 文件“testdb.py”,第 22 行,位于 连接.执行(SQL,参数) 文件“”,第 2 行,正在执行 pywintypes.com_error: (-2147352567, '发生异常。', (0, u'Microsoft JET D atabase Engine', u"查询表达式'PregnancyCode = %s'中存在语法错误。", None , 5003000, -2147217900), 无)
我尝试在 PregnancyCode 中进行硬编码,看看这是否会产生影响,但没有,同样的错误。
知道我做错了什么吗?
最佳答案
我的 Python 非常生疏,我不记得这种类型的替换叫什么,但我认为你正在尝试用 INSERT 语句完成与此类似的事情:
>>> print "Hello %s" %("World")
Hello World
从您的代码中:
SQL = "INSERT INTO UniqueData SELECT * FROM Rawdata WHERE PregnancyCode =%s"
params = (PregCode)
connection.execute(SQL, params)
问题是连接是一个ADO连接,其Execute Method不会执行您想要的 Pythonic 文本替换。
我认为你应该在将 INSERT 字符串提供给 connection.execute
之前用 Python 进行文本替换,也许是这样的:
SQL = "INSERT INTO UniqueData SELECT * FROM Rawdata WHERE PregnancyCode =%s" %(PregCode)
connection.execute(SQL)
如果我对 Python 的理解不太正确,希望它足够接近,以便您可以了解如何修复它。
顺便说一句,你的标题提到了Python ODBC,但我没有看到你的代码根本使用ODBC。
关于python - INSERT INTO SELECT 语法错误 Python ODBC 与 Microsoft Access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6683580/