pymssql:与数据库的连接有时才起作用

2024-04-26 08:29:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python的pymssql连接到azuresqlserver。问题是,以下脚本可以正常工作,但仅在某些情况下,有时我会遇到此错误:

_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()

如果有人能告诉我为什么上面的脚本只在某些时候起作用,其余的时候我会得到“自适应服务器连接失败”错误,这将对我有很大的帮助。在


Tags: 脚本dblib错误情况errorconncursor
1条回答
网友
1楼 · 发布于 2024-04-26 08:29:59

我回顾了这些非常旧的线程Read from the server failed when trying to connect to sql-azure from tsql和{a2}。 这个问题似乎是由使用错误版本的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上使用pymssql和FreeTDS,我认为您需要检查配置文件。”免费电话会议“在路径/etc/freetds/。在

以下是我对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 server的连接。在

谨致问候。在

相关问题 更多 >