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

Jen*_*Jen 2 python sql ms-access ms-access-2007 pyodbc

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

Gor*_*son 5

如果 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()
Run Code Online (Sandbox Code Playgroud)

如果查询是其他类型的查询(例如,带参数的 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()
Run Code Online (Sandbox Code Playgroud)