Вам нужно настроить PYODBC для использования драйвера FreeTDS вместо драйвера microsoft odbc, и вы должны убедиться, что вы указали все правильные параметры для вашего соединения.
Получение FreeTDS для работы с pyodbc можетбыть немного запутанным и хитрым.
Убедитесь, что у вас установлен FreeTDS.
Найдите файл конфигурации драйвера odbc (odbcinst.ini
).
❯ odbcinst -j
unixODBC 2.3.7
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /Users/<user>/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
В моем случае файл находится по адресу /usr/local/etc/odbcinst.ini
.
Убедитесь, что в вашем файле конфигурации драйвера есть запись для драйвера FreeTDS.
В моем случае на компьютере Mac odbcinst.ini
есть эта запись:
[FreeTDS]
Description=TD Driver (MSSQL)
Driver=/usr/local/lib/libtdsodbc.so
Setup=/usr/local/lib/libtdsodbc.so
FileUsage=1
Когда вы указываете driver
в pyodbc, это файл, в котором он ищет.
Теперь это должно работать.
import pyodbc
cnx = pyodbc.connect(
server="myserver.com",
database="mydb",
user="domain\user",
password="mypassword",
port="1433",
driver='FreeTDS',
TDS_Version='7.4',
)
Некоторые примечания:
При наличии активной учетной записи каталога обязательно укажите домен в поле user
.
Такие параметры, как TDS_Version
, не учитываются в odbcinst.ini
. Поэтому, если вы получаете сообщение об ошибке, например [FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)
, вам может потребоваться указать TDS_Version
в connect
.