我使用的是Mac OS系统安装而不是virtualenv。在这上面我安装了freetds和pymssql 2.1。使用以下方法将数据连接到数据库:
pymssql.connect(server='the.host.name\instance', user='username' etc . . ).
意识到virtualenv是做东西的正确方法我创建了一个基于python 2.7的虚拟环境,并尝试pip安装pymssql但收到错误消息。快速搜索找到了修复 - 即从git安装:
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)
明确比隐含更好。最好始终包括端口号(至少我这样做)。
答案 1 :(得分:0)
查看以下两项:
\
个字符时,请确保对其进行双引号('the.host.name\\instance'
)或使用原始字符串表示法(r'the.host.name\instance'
)。这是标准的Python开发实践。