簡體   English   中英

pyodbc 連接到在 docker 容器上運行的 MS SQL Server

[英]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 連接時,完全相同的數據庫詳細信息工作。

如果您有一個包含主機名/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=提供主機名/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 文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM