How to Run a Microsoft Access Sub/Function from Python with Parameters

What will you learn?

In this tutorial, you will learn how to seamlessly execute a Microsoft Access subroutine or function in Python while passing parameters to it. By leveraging the pyodbc library, you can establish a connection to the Access database and call specific subroutines or functions directly from your Python script.

Introduction to the Problem and Solution

The challenge at hand involves interacting with a Microsoft Access database through Python by executing targeted subroutines or functions within the database. To overcome this obstacle, we will utilize the pyodbc library, which serves as an interface for accessing ODBC databases. By establishing a connection using pyodbc, we can effectively call the desired Access subroutine or function along with any necessary parameters directly from our Python script.


import pyodbc

# Establish connection to the MS Access database file
conn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=path\to\your\database.accdb;')

# Create a cursor object using the connection
cursor = conn.cursor()

# Define the name of your subroutine or function in MS Access (replace 'your_sub_or_function_name' accordingly)
sql_command = '''
    EXEC your_sub_or_function_name ?

# Specify parameter values for the subroutine/function (if needed)
params = ('parameter_value',)

# Execute the subroutine/function with parameters
cursor.execute(sql_command, params)

# Close connections after execution

# Copyright PHD

Note: Prior to running this code, ensure that you have installed pyodbc via pip (pip install pyodbc).


  1. Establish Connection: Connects to your Microsoft Access database file.
  2. Cursor Creation: Creates a cursor object for interacting with the database.
  3. SQL Command Setup: Defines the SQL command for calling your specified sub/function.
  4. Parameter Definition: Assigns parameter values if required by the sub/function.
  5. Execution: Executes the SQL command along with provided parameters.
  6. Commit Changes: Commits any changes made during execution.
  7. Close Connections: Properly closes both cursor and connection objects.

Establishing Connection through pyodbc Library:

Utilize pyodbc as an intermediary between Python and MS Access databases for seamless interaction.

Executing SQL Command:

Use EXEC keyword with specified sub/function name followed by placeholders (?) for parameter insertion during execution.

Passing Parameters:

Provide parameter values within a tuple passed alongside SQL command during execution for correct data transmission.

Committing Changes:

Finalize modifications made within session using .commit() method post-execution of subs/functions.

    How do I install pyodbc?

    To install PyODBC, use: pip install pyodbc.

    Can I use this method on macOS/Linux systems?

    Yes, provided proper ODBC driver configuration on your system.

    What if my function requires multiple parameters?

    Adjust number of placeholders (?) in SQL command and provide corresponding values in params tuple accordingly.

    Is it possible to retrieve results back from functions/subroutines?

    Yes, handle returned results based on function/subroutine output in MS Access after execution in Python code.

    Do I need special permissions on my MS Access Database?

    Ensure appropriate user permissions granted within MS Access for executing subs/functions remotely via ODBC connections like this one.


    By bridging Python and Microsoft Access, developers can efficiently integrate functionalities present in legacy systems like MS Office applications into modern workflows using libraries such as pyodbc. This seamless interaction opens up diverse possibilities for data manipulation across different platforms.

    Leave a Comment