skip to content

sqlalchemy_get_engine.py

A simple function that creates a reuseable SQLalchemy engine.

# Import required libraries
from sqlalchemy import create_engine
from sqlalchemy.engine import URL


def get_engine(credentials: dict, db_driver: str = "ODBC Driver 17 for SQL Server"):
    """Generate a resuable SQLalchemy engine object for mssql+pyodbc

    Args:
        credentials (dict): Should include keys for
        "username", "password", "host", "port" and "database".

        db_driver (str, optional): ODBC driver to use.
        Defaults to "ODBC Driver 17 for SQL Server".

    Returns:
        Engine: SQLalchemy Engine object
    """

    # Generate the connection url
    url = URL.create(
        "mssql+pyodbc",
        username=credentials["username"],
        password=credentials["password"],
        host=credentials["host"],
        port=credentials["port"],
        database=credentials["database"],
        query=dict(driver=db_driver),
    )

    # Create and return an engine object
    return create_engine(url, fast_executemany=True)