我在CentOS 2.6中的python 2.7上运行了一个连接到Sql erver数据库的python脚本:
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 trace会说login.c:436:invalid port number
添加PORT=1433;
将导致连接成功,即使这是默认端口号,我将以下内容添加到我的freetds.conf中:
[全球] #TDS协议版本 tds版本= 7.0 port = 1433
如何使FreeTDS尝试将端口1433作为默认端口,以便我不必在查询字符串中设置它?
答案 0 :(得分:0)
而不是这样,正如你所说:
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
这两种方式一直对我有用。
另一方面,我已经开始使用这个由Microsoft专门为RedHat和CentOS制作的驱动程序(虽然我不知道它是否适用于与您相同的版本):
https://msdn.microsoft.com/en-us/library/hh568451%28v=sql.110%29.aspx
祝你好运!