2016-08-17 59 views
1

我使用的是Python的MacOS系统安装而不是virtualenv。在这我已经安装了freetds和pymssql 2.1。该连接细使用数据库:使用pymssql 2.2不连接到SQL服务器

pymssql.connect(server='the.host.name\instance', user='username' etc . .). 

意识到的virtualenv是做的东西我创建了一个基于2.7蟒蛇虚拟env和试图点子安装pymssql但得到一个错误信息的正确方法。快速狩猎发现修复 - 即从混帐与安装:

pip install git+https://github.com/pymssql/pymssql.git 

但现在我的连接调用返回一个主机不响应错误。我用tsql来调试(TDSDUMP = stdout),它看起来像地址\实例导致了一个问题。连接到有地址但没有实例的数据库工作正常

当我恢复到我的系统范围安装并运行它时,我看到freetds将数据库实例的端口号解析为特定端口(portNo)。

在我的virtualenv下,如果我使用此端口号对pymssql进行调用,那么我的连接就没有问题。

pymssql.connect(server='the.host.name\instance', user='username', port='portNo', etc . . .) 

虽然这个解决方案的工作 - 我猜测,服务器上的任何更改可能会打破它。

任何想法为什么我的pymssql调用在这些情况下失败?

回答

0

显式优于隐式。最好总是包含端口号码(至少我是这样做的)。

0

查看以下两个项目:

  • 确保pymssql(全球一个和你的virtualenv内获得一个)的两个installatons是针对同一FeeeTDS版本实际上链接。可能你安装了多个FreeTDS版本,这就是你看到不同行为的原因。
  • 服务器参数含有字符\,请确保您无论是双引号它('the.host.name\\instance'),或使用原始字符串符号(r'the.host.name\instance')。这是标准的Python开发实践。