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),无)
我已经尝试在怀孕代码中进行硬编码,看看是否会有所作为,但没有,同样的错误。
任何想法我做错了什么?
我的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。
谢谢!解决了。你说得对,它是ADO。 –
你的SQL需要一个“INTO”子句:
SQL = "INSERT INTO UniqueData SELECT * FROM Rawdata WHERE PregnancyCode =%s"
对不起,这是一个错字,在那里有一个INTO,而且我仍然遇到错误。 –
execute()的第二个参数需要是一个序列。正如所写,它是一个单一的价值。改用'(PregCode,)';注意尾随逗号。逗号使它成为一个元组。 – bernie