Skip to content

Instantly share code, notes, and snippets.

@tiagoad
Last active October 6, 2023 16:45
Show Gist options
  • Save tiagoad/601ed68242bb57c8ed7b9bcaaf398b3b to your computer and use it in GitHub Desktop.
Save tiagoad/601ed68242bb57c8ed7b9bcaaf398b3b to your computer and use it in GitHub Desktop.
macOS Mojave + pyodbc + FreeTDS + SQL Server + Django 2.2

pyODBC + FreeTDS

  1. Run brew install unixodbc freetds
  2. Add section to /usr/local/etc/odbcinst.ini:
    [FreeTDS]
    Description     = FreeTDS unixODBC Driver
    Driver          = /usr/local/lib/libtdsodbc.0.so
    Setup           = /usr/local/lib/libtdsodbc.0.so
    UsageCount      = 1
  3. Connect to server (bypassing the freetds.conf file):
    import pyodbc
    
    connstr = 'DRIVER={driver};SERVER={server};UID={username};PWD={password};DATABASE={database}'.format(
        driver='FreeTDS',
        server='127.0.0.1\INSTANCE01',
        username='user',
        password='pass',
        database='db'
    )
    
    conn = pyodbc.connect(connstr)

Django 2.2 (extra)

  1. Install the @JordanReiter Django 2.2 fork (Check michiya/django-pyodbc-azure#192 for more information):
    pip3 install git+https://github.com/JordanReiter/django-pyodbc-azure@azure-2.2#egg=django-pyodbc-azure

  2. Edit django settings.py

    DATABASES = {
        'default': {
            'ENGINE': 'sql_server.pyodbc',
            'HOST': '127.0.0.1\INSTANCE01',
            'NAME': 'db',
            'USER': 'user',
            'PASSWORD': 'pass',
            'OPTIONS': {
                'driver': 'FreeTDS',
                'host_is_server': True,
            },
        }
    }

In my case fixes:

  • [01000] [unixODBC][Driver Manager]Can't open lib 'FreeTDS' : file not found (0) (SQLDriverConnect)" among other errors.

  • [08S01] [FreeTDS][SQL Server]Unable to connect: Adaptive Server is unavailable or does not exist (20009) (SQLDriverConnect)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment