微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – pymssql:有时只能连接到数据库

我正在尝试使用Python的pymssql连接到Azure sql服务器.问题是以下脚本有效,但有时只有,其他时候我收到此错误

_mssql.MSsqlDatabaseException: (20002, b’DB-Lib error message 20002, severity 9:\nAdaptive Server connection Failed\n’)

这是我正在使用的脚本:

import pymssql
conn = pymssql.connect(server='x', user='x', password='x', database='x')
cursor = conn.cursor()
cursor.execute('SELECT * FROM customers');
row = cursor.fetchone()
while row:
    print (str(row[0]) + " " + str(row[1]) + " " + str(row[2]))
    row = cursor.fetchone()

如果有人能告诉我为什么上面的脚本有时只能工作而且剩下的时间我得到“Adaptive Server连接失败”错误,这对我有很大的帮助.

解决方法:

我回顾了这些SO老线程Read from the server failed when trying to connect to sql-azure from tsqlWhat is TDS Protocol Version 8.0 and why should I use it?.
这个问题似乎是由使用错误版本的FreeTDS引起的.

我在FreeTDS官方网站http://www.freetds.org/faq.html#Does.FreeTDS.support.Microsoft.servers页面上找到了密钥.

产品http://www.freetds.org/userguide/choosingtdsprotocol.htm一个TDS协议版本表.

enter image description here

出于向后兼容性原因,FreeTDS会将此版本的别名设为7.1,但由于未来的兼容性问题,应该避免这种情况.请参阅下面有关过时版本的说明.

如果你在Linux上使用带有FreeTDS的pymssql,我认为你需要在路径/ etc / freetds /上检查配置文件“freetds.conf”.

这是我在下面的Azure sql Server配置:

# A typical Microsoft server
[egServer70]
        host = <database_name>.database.windows.net
        port = 1433
        tds version = 7.3

您可以尝试使用freetds工具’tsql’命令’tsql -H< database_name> .database.windows.net -U Username -D DatabaseName -p 1433 -P Password’来测试与Azure sql服务器的连接.

最好的祝福.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐