如何使用 pyodbc 执行保存在 MS Access 中的查询

Posted

技术标签:

【中文标题】如何使用 pyodbc 执行保存在 MS Access 中的查询【英文标题】:How to execute query saved in MS Access using pyodbc 【发布时间】:2016-01-05 14:29:37 【问题描述】:

网上有很多关于如何使用 pyodbc 在 MS Access 2007 中运行查询的提示,但所有这些查询都是在 Python 脚本本身中编码的。我想使用 pyodbc 来调用已经保存在 MS Access 中的查询。我该怎么做?

【问题讨论】:

【参考方案1】:

如果在 Access 中保存的查询是不带参数的简单 SELECT 查询,则 Access ODBC 驱动程序会将其公开为视图,因此您只需像使用表一样使用查询名称:

import pyodbc
connStr = (
    r"Driver=Microsoft Access Driver (*.mdb, *.accdb);"
    r"DBQ=C:\Users\Public\Database1.accdb;"
    )
cnxn = pyodbc.connect(connStr)
sql = """\
SELECT * FROM mySavedSelectQueryInAccess
"""
crsr = cnxn.execute(sql)
for row in crsr:
    print(row)
crsr.close()
cnxn.close()

如果查询是其他类型的查询(例如,带有参数的 SELECT、INSERT、UPDATE...),那么 Access ODBC 驱动程序会将它们公开为存储过程,因此您需要使用 ODBC CALL ... 语法,如在

import pyodbc
connStr = (
    r"Driver=Microsoft Access Driver (*.mdb, *.accdb);"
    r"DBQ=C:\Users\Public\Database1.accdb;"
    )
cnxn = pyodbc.connect(connStr)
sql = """\
CALL mySavedUpdateQueryInAccess
"""
crsr = cnxn.execute(sql)
cnxn.commit()
crsr.close()
cnxn.close()

【讨论】:

代码中缺少一行是import pyodbc。投票 - 因为它对我有用 ;-) @Plirkee - 我添加了import 语句。谢谢。

以上是关于如何使用 pyodbc 执行保存在 MS Access 中的查询的主要内容,如果未能解决你的问题,请参考以下文章

在 pyodbc 中执行 SELECT 查询时,来自 ODBC MS Access 驱动程序的“系统资源超出”错误

使用 pyodbc 将 Python 连接到 MS SQL Server

在 ms 访问中看不到由 pyodbc 创建的表

使用 Pyodbc 在 MS Access 表中写入新行的问题

pyodbc - 使用默认值将列添加到 MS Access

使用 pyodbc 将带日期的数据上传到 MS Access 数据库