2013-07-15 87 views
3

我已正确安装和配置FreeTDS。因为这追加到年底我的freetds.conf文件:无法使用pymssql连接到mssql db

[myserver] 
    host = myserver 
    port = 1433 
    tds version = 7.0 

,我还可以运行以下命令,给了我一个SQL提示:

tsql -S myserver -U username 

我的Python脚本是极小的,企图成功连接到数据库:

#! /path/to/python/bins 

import pymsql 
conn = pymssql.connect(host='myserver', user='username', password='password', database='database', as_dict=True) 
conn.close() 

但是当我运行它,我收到以下错误:

Traceback (most recent call last): 
    File "./test.py", line 5, in <module> 
    conn = pymssql.connect(host='myserver', user='username', password='password', database='database', as_dict=True) 
    File "pymssql.pyx", line 456, in pymssql.connect (pymssql.c:6017) 
pymssql.InterfaceError: Connection to the database failed for an unknown reason. 

这是什么原因造成的?从我搜索的内容来看,遇到这个问题的大多数人都有freetds.conf文件配置不正确;不过,我可以成功连接(使用tsql)。有谁知道我做错了什么,或者我该如何解决这个问题?

回答

3

我刚刚查看了pymssql的代码,很可能您遇到了MSSQL驱动程序的问题。 https://code.google.com/p/pymssql/source/browse/pymssql.pyx?name=1.9.908#456

尝试freetds的配置日志看到“未知原因”:看到http://freetds.schemamania.org/userguide/logging.htmmirror

基本上是:

$ export TDSDUMP=/tmp/freetds.log 
+0

它看起来是不是想我指定的端口上的连接freetds.conf文件:'net.c:210:连接到端口4000(TDS版本5.0)' – EGr

+0

我想通过一种方式获得连接(尽管我现在正在收到其他错误);我只需要在python代码中指定端口。所以我有'host = myserver'的地方,我会有'host = myserver:port'。虽然我所有的问题都没有解决,但我所问的是。谢谢! – EGr

+0

我也应该注意到我必须创建下面的env变量:'TDSVER = 8.0' – EGr