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

时间:2016-01-05 14:29:37

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

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

1 个答案:

答案 0 :(得分:3)

如果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 with parameters,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()