我有一个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
祝你好运!