INSERT INTO SELECT语法错误与Microsoft Access的Python ODBC

问题描述:

在此处和Web上进行了长时间的搜索,似乎找不到任何示例说明我为什么会在以下语言中遇到语法错误: import win32com.clientINSERT INTO SELECT语法错误与Microsoft Access的Python ODBC

` 
     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行,在 connection.execute(SQL,则params) 文件“ “,第2行,执行 pywintypes.com_error:(-214 7352567,'Exception occurred。',(0,u'Microsoft JET D atabase Engine',u“查询表达式中的语法错误'PregnancyCode =%s'。”,无 ,5003000,-2147217900),无)

我已经尝试在怀孕代码中进行硬编码,看看是否会有所作为,但没有,同样的错误。

任何想法我做错了什么?

+1

execute()的第二个参数需要是一个序列。正如所写,它是一个单一的价值。改用'(PregCode,)';注意尾随逗号。逗号使它成为一个元组。 – bernie

我的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文本替换。

我想你之前应该做的文本替换在Python 你喂的INSERT字符串connection.execute也许是这样的:

SQL = "INSERT INTO UniqueData SELECT * FROM Rawdata WHERE PregnancyCode =%s" %(PregCode) 
connection.execute(SQL) 

如果我没有得到Python里是相当正确的,希望它很接近足以让你看到如何解决它。

顺便说一句,您的标题提到了Python ODBC,但我没有看到您的代码完全使用ODBC。

+0

谢谢!解决了。你说得对,它是ADO。 –

你的SQL需要一个“INTO”子句:

SQL = "INSERT INTO UniqueData SELECT * FROM Rawdata WHERE PregnancyCode =%s" 
+0

对不起,这是一个错字,在那里有一个INTO,而且我仍然遇到错误。 –