在这里和网络上进行了长时间的搜索,似乎找不到任何可以解释为什么在以下内容上出现语法错误的示例:
导入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()`


我收到以下错误:

追溯(最近一次通话):
  在第22行的文件“ testdb.py”中
    connection.execute(SQL,参数)
  执行中的文件“”,第2行
pywintypes.com_error:(-2147352567,'发生异常。',(0,uMicrosoft JET D
atabase Engine”,u“查询表达式'PregnancyCode =%s'中的语法错误。”,无
,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 - 使用Microsoft Access插入INSERT SELECT语法错误Python ODBC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6683580/

10-13 21:27
查看更多