pyodbc 连接到 docker 容器上的 MS SQL 服务器 运行
pyodbc connection to MS SQL Server running on a docker container
尝试通过指定驱动程序连接时,pyodbc 似乎无法连接。我能够连接以设置 DSN,但我也想在用户获得驱动程序、服务器、UID、PWD 和数据库详细信息时建立连接。
我正在 Mac 并且正在使用 FreeTDS 驱动程序。
freetds.conf
[MYMSSQL]
host = 0.0.0.0
port = 1433
tds version = 7.3
odbcinst.ini
[FreeTDS]
Description=FreeTDS Driver for Linux & MSSQL
Driver=/usr/local/lib/libtdsodbc.so
Setup=/usr/local/lib/libtdsodbc.so
UsageCount=10
这是我尝试连接的方式:
conn_str = "DRIVER=FreeTDS;SERVER={0};UID={1};PWD={2};DATABASE={3}".format('MYMSSQL', 'sa', 'password','tempdb')
conn = pyodbc.connect(conn_str)
我得到的错误是:
pyodbc.OperationalError: ('08001', '[08001] [FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')
当我尝试通过 DSN 连接时,完全相同的数据库详细信息有效。
如果您有一个包含主机 name/IP 和端口的 freetds.conf 文件,例如
gord@xubuntu64-nbk1:~$ cat /etc/freetds/freetds.conf
[myFreeTdsHost]
host = 192.168.0.179
port = 49242
然后您只需指定 SERVERNAME=
即可在无 DSN 连接字符串中使用这两个值
# get host name/IP and port from freetds.conf
cnxn_str = (
'DRIVER=FreeTDS_ODBC;'
'SERVERNAME=myFreeTdsHost;'
'DATABASE=myDb;'
'UID=sa;PWD=_whatever_;'
)
您也可以直接通过 SERVER=
和 PORT=
提供主机 name/IP 和端口
# supply host name/IP and port directly (bypassing freetds.conf)
cnxn_str = (
'DRIVER=FreeTDS_ODBC;'
'SERVER=192.168.0.179;'
'PORT=49242;'
'DATABASE=myDb;'
'UID=sa;PWD=_whatever_;'
)
有关详细信息,请参阅 FreeTDS 文档 here。
尝试通过指定驱动程序连接时,pyodbc 似乎无法连接。我能够连接以设置 DSN,但我也想在用户获得驱动程序、服务器、UID、PWD 和数据库详细信息时建立连接。
我正在 Mac 并且正在使用 FreeTDS 驱动程序。
freetds.conf
[MYMSSQL]
host = 0.0.0.0
port = 1433
tds version = 7.3
odbcinst.ini
[FreeTDS]
Description=FreeTDS Driver for Linux & MSSQL
Driver=/usr/local/lib/libtdsodbc.so
Setup=/usr/local/lib/libtdsodbc.so
UsageCount=10
这是我尝试连接的方式:
conn_str = "DRIVER=FreeTDS;SERVER={0};UID={1};PWD={2};DATABASE={3}".format('MYMSSQL', 'sa', 'password','tempdb')
conn = pyodbc.connect(conn_str)
我得到的错误是:
pyodbc.OperationalError: ('08001', '[08001] [FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')
当我尝试通过 DSN 连接时,完全相同的数据库详细信息有效。
如果您有一个包含主机 name/IP 和端口的 freetds.conf 文件,例如
gord@xubuntu64-nbk1:~$ cat /etc/freetds/freetds.conf
[myFreeTdsHost]
host = 192.168.0.179
port = 49242
然后您只需指定 SERVERNAME=
# get host name/IP and port from freetds.conf
cnxn_str = (
'DRIVER=FreeTDS_ODBC;'
'SERVERNAME=myFreeTdsHost;'
'DATABASE=myDb;'
'UID=sa;PWD=_whatever_;'
)
您也可以直接通过 SERVER=
和 PORT=
提供主机 name/IP 和端口
# supply host name/IP and port directly (bypassing freetds.conf)
cnxn_str = (
'DRIVER=FreeTDS_ODBC;'
'SERVER=192.168.0.179;'
'PORT=49242;'
'DATABASE=myDb;'
'UID=sa;PWD=_whatever_;'
)
有关详细信息,请参阅 FreeTDS 文档 here。