This message was deleted.
# ask-marvin
s
This message was deleted.
m
thought for 140.2 seconds
That error means pyodbc can’t find an installed ODBC driver or DSN to use. With
mssql+pyodbc
, you must both: 1) Have a Microsoft ODBC driver installed on the machine/container where the task actually runs, and 2) Tell SQLAlchemy/pyodbc which driver to use via the URL query parameters. In Prefect’s SqlAlchemyConnector you do the latter by setting
query
on
ConnectionComponents
. Try this (note the query keys), replacing placeholders as needed:
Copy code
from prefect_sqlalchemy import SqlAlchemyConnector
from prefect_sqlalchemy.credentials import ConnectionComponents, SyncDriver

connector = SqlAlchemyConnector(
    connection_info=ConnectionComponents(
        driver=SyncDriver.MSSQL_PYODBC,   # produces mssql+pyodbc://...
        username="username_placeholder",
        password="pwd_placeholder",
        host="host_placeholder",          # add port if needed via port=1433
        database="XXX",
        query={
            "driver": "ODBC Driver 18 for SQL Server",  # must match an installed driver name
            "Encrypt": "yes",                           # Azure SQL requires this
            "TrustServerCertificate": "yes"             # set "no" for production if you have proper certs
        }
    )
)

connector.save("com-sqlserver", overwrite=True)

def load_data():
    with SqlAlchemyConnector.load("com-sqlserver") as connector:
        data = connector.fetch_all("SELECT TOP 10 * FROM [XXX].[dbo].[Branches]")
        return data
Key checks - Verify the driver is actually installed in the runtime: - In the same environment where the task runs:
Copy code
import pyodbc
    print(pyodbc.drivers())
Ensure you see exactly "ODBC Driver 18 for SQL Server" (or 17). Use that exact string in the
query["driver"]
. - If you’re running in a container or a separate worker image, the ODBC driver must be installed inside that image as well. - If you use a named instance or non-default port, set
port=1433
(or your port) on
ConnectionComponents
. Install the Microsoft ODBC driver - Windows: Microsoft ODBC Driver for SQL Server (Windows) - macOS: Install on macOS - Linux: Install on Linux References - Prefect SQLAlchemy integration: Prefect SQLAlchemy integration - SQLAlchemy MSSQL + pyodbc details: SQLAlchemy MSSQL + pyodbc If this still fails: - What OS is the task running on (and is it inside Docker)? - What’s the output of
pyodbc.drivers()
? - Are you connecting to Azure SQL (often requires
Encrypt=yes;TrustServerCertificate=no
)?