通过Pyodbc运行带有所需参数的MS Access中保存的查询?

时间:2016-12-01 23:40:14

标签: python ms-access pyodbc

我正在使用Pyodbc将我的程序与MS Access连接。在Access数据库中,我预先创建了一些需要参数的查询。在Python中执行查询时,如何将值传递给查询的参数?

2 个答案:

答案 0 :(得分:0)

这是一个概括性的例子。首先,连接到数据库。然后,发出命令。该命令只是一个字符串。您可以通过简单的字符串连接来合并代码中其他位置的变量。

import pyodbc

connStr = """
DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};
DBQ=C:\full\path\to\your\PYODBC.accdb;
"""
cnxn = pyodbc.connect(connStr)
cursor = cnxn.cursor()

desired_column = "Forename"
table_name = "Student"
command = "SELECT " + desired_column + " FROM " + table_name

cursor.execute(command)
row = cursor.fetchone()
if row:
    print(row)

答案 1 :(得分:0)

当Access数据库包含已保存的参数查询时,它们由Access ODBC作为存储过程公开,并且可以使用ODBC {call ...}语法调用。例如,使用名为[ClientEmails] ...

的已保存查询
PARAMETERS prmLastName Text ( 255 );
SELECT Clients.ID, Clients.LastName, Clients.FirstName, Clients.Email
FROM Clients
WHERE (((Clients.LastName)=[prmLastName]));

...以下Python代码将运行该查询并返回特定姓氏的结果:

cmd = "{call ClientEmails(?)}"
params = ("Thompson",)
crsr.execute(cmd, params)  # pyodbc "cursor" object
for row in crsr.fetchall():
    print(row)