【发布时间】:2019-03-28 20:33:06
【问题描述】:
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 连接时,完全相同的数据库详细信息会起作用。
【问题讨论】:
-
您在创建 DSN 或任何其他驱动程序时是否选择了
FreeTDS驱动程序。 -
DSN 配置中有“驱动程序”条目,所以我有 [MS_SQL_SERVER_DSN] 描述 = 测试 SQLServer 驱动程序 = FreeTDS 服务器名称 = MYMSSQL 数据库 = tempdb
-
你能不能试着给像
DRIVER={FreeTDS}这样的驱动程序,看看会发生什么 -
刚刚尝试过,但没有成功
-
如果您想从 freetds.conf 中提取服务器名称,我认为您需要在连接字符串中使用
SERVERNAME=(而不是SERVER=)。详情here.
标签: python sql-server pyodbc freetds