pyodbc.connect到FreeTDS连接需要显式PORT=1433;



我有一个python脚本在CentOS 2.6中的python 2.7上运行,该脚本连接到Sql Server数据库:

pyodbc.connect("DRIVER=FreeTDS;SERVER=someServer;DATABASE=someDb;UID=myUser;PWD=superSecret;CHARSET=UTF8;TDS_Version=7.2")

该调用将失败,出现以下情况:pyodbc.Error: ('08001', '[08001] [unixODBC][FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')

freetds跟踪将显示login.c:436:invalid port number

添加PORT=1433;将导致连接成功,即使这是默认端口号,我在freetds.conf:中添加了以下内容

[全球]#TDS协议版本tds版本=7.0端口=1433

我如何让FreeTDS尝试将端口1433作为默认端口,这样我就不必在查询字符串中设置它了?

正如您所指出的:

pyodbc.connect("DRIVER=FreeTDS;SERVER=someServer;DATABASE=someDb;UID=myUser;PWD=superSecret;CHARSET=UTF8;TDS_Version=7.2")

您可以将这些值放入连接字符串中,如下所示:

pyodbc.connect("DRIVER={FreeTDS};SERVER=someServer;PORT=1433;DATABASE=someDb;UID=myUser;PWD=superSecret;TDS_Version=7.2;CHARSET=UTF8")

对于您的freetds.conf配置:

[global]
    client charset = UTF-8
    tds version = 7.2
[someServer]
    host = someServer
    port = 1433
    tds version = 7.2

这两种方式一直对我有效。

顺便说一句,我已经开始使用这个由微软专门为RedHat和CentOS制作的驱动程序(尽管我不知道它是否适用于像你这样旧的版本):

https://msdn.microsoft.com/en-us/library/hh568451%28v=sql.110%29.aspx

祝你好运!

相关内容

  • 没有找到相关文章

最新更新