ODBC自动选择可用驱动

15 阅读1分钟

虽然 pyodbcdriver 参数本身只接受一个字符串,不能同时指定多个驱动,但你可以通过代码逻辑“自动选择可用驱动”。


✅ 推荐做法:自动检测可用的驱动版本

settings.py 中动态检测系统中已安装的驱动,优先使用 17,其次是 13。例如:

import pyodbc

def get_available_driver():
    drivers = [driver for driver in pyodbc.drivers()]
    if 'ODBC Driver 17 for SQL Server' in drivers:
        return 'ODBC Driver 17 for SQL Server'
    elif 'ODBC Driver 13 for SQL Server' in drivers:
        return 'ODBC Driver 13 for SQL Server'
    else:
        raise Exception('没有找到可用的 SQL Server ODBC 驱动,请安装 ODBC Driver 13 或 17')

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'your_db_name',
        'USER': 'your_username',
        'PASSWORD': 'your_password',
        'HOST': 'your_db_host',
        'PORT': '',
        'OPTIONS': {
            'driver': get_available_driver(),
            'MARS_Connection': True,
        },
    }
}

✅ 优势

  • 灵活兼容不同同事的环境;
  • 避免了强制统一安装同一驱动版本的麻烦;
  • 对同事透明,不需要他们修改代码。