【问题标题】:Run the query saved in MS Access with required parameters through Pyodbc?通过 Pyodbc 使用所需参数运行保存在 MS Access 中的查询?
【发布时间】:2016-12-01 23:40:14
【问题描述】:

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

【问题讨论】:

    标签: python ms-access pyodbc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这是一个通用示例。首先,连接到数据库。然后,发出命令。该命令只是一个字符串。您可以通过简单的字符串连接将来自其他地方的变量合并到代码中。

      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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 2011-07-27
        • 2017-01-01
        • 1970-01-01
        相关资源
        最近更新 更多