【问题标题】:Cannot connect to mssql db using pymssql无法使用 pymssql 连接到 mssql db
【发布时间】:2013-07-13 19:34:36
【问题描述】:

我已正确安装和配置了 FreeTDS。我的 freetds.conf 文件附加到末尾:

[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)。有谁知道我做错了什么,或者我该如何解决这个问题?

【问题讨论】:

    标签: python sql-server freetds pymssql


    【解决方案1】:

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

    尝试在 FreeTDS 中配置日志以查看“未知原因”:请参阅 http://freetds.schemamania.org/userguide/logging.htm (mirror)

    基本上:

    $ export TDSDUMP=/tmp/freetds.log
    

    【讨论】:

    • 它似乎没有尝试连接我在 freetds.conf 文件中指定的端口:net.c:210:Connecting to &lt;server-ip&gt; port 4000 (TDS version 5.0)
    • 我找到了一种获取连接的方法(尽管我现在遇到了其他错误);我只需要在 python 代码中指定端口。所以在我有host=myserver 的地方,我会有host=myserver:port。虽然我所有的问题都没有解决,但我要问的是。谢谢!
    • 我还应该注意,我必须创建以下环境变量:TDSVER=8.0
    猜你喜欢
    • 1970-01-01
    • 2015-11-25
    • 2017-03-25
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多