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

标签 python sql ms-access insert

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

相关文章:

MYSQL表搜索-过滤

sql - 排除 Oracle 表中的假期

vba - 失去与SharePoint问题的连接

ms-access - 在 MS Access 中按名称打开 DBF 文件

python - 在 tensorflow 中,我如何从生成器读取我的预测?

python - 如何在 python 脚本中使用 cpulimit

python - BeautifulSoup 不拾取单个标签

python - 如何沿数组维度映射克罗内克乘积?

sql - 查找连续的两行

c# - 以编程方式将多个 SQL 列组合并存储到一个列中