虽然 pyodbc
的 driver
参数本身只接受一个字符串,不能同时指定多个驱动,但你可以通过代码逻辑“自动选择可用驱动”。
✅ 推荐做法:自动检测可用的驱动版本
在 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,
},
}
}
✅ 优势
- 灵活兼容不同同事的环境;
- 避免了强制统一安装同一驱动版本的麻烦;
- 对同事透明,不需要他们修改代码。