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

标签 python sql ms-access ms-access-2007 pyodbc

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

最佳答案

如果 Access 中保存的查询是不带参数的简单 SELECT 查询,则 Access ODBC 驱动程序将其公开为 View ,因此您所需要做的就是使用查询名称,就像它是表一样:

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()

关于python - 如何使用 pyodbc 执行 MS Access 中保存的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34614070/

相关文章:

c# - 对多个方法 C# 使用单个事务

mysql - MySQL获取重复行

mysql - 仅当谓词在所有分组字段上都为真时才选择 GROUP BY 语句

json - 如何使用 VBA 从 url 导入 json 数据?

python - PYODBC InterfaceError-未找到数据源名称

mysql - 防止恶意sql注入(inject)

python - 导入多数组 numpy 扩展模块失败(仅使用 Anaconda)

python - 通过 python informixdb 寻找 informix 的 SQL 插入语法

python - Rpy2和 Pandas : join output from predict to pandas dataframe

python - Selenium 无法单击元素,因为其他元素将其遮盖