Соединиться с Pyms sql / Ошибка подключения Adaptive Server (Windows. net vs Azure .com) - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь подключиться к новой базе данных, используя приведенный ниже метод, который я использовал много раз ранее:

import pymssql
server = "servername.database.windows.net"
user = "user"
password = "pwd"
conn = pymssql.connect(server, user, password, "DB")

Я получаю это сообщение об ошибке:

MSSQLDatabaseException: (20004, b'DB-Lib error message 20004, severity 9:\nRead from the server failed (servername.database.windows.net:1433)\nNet-Lib error during Connection reset by peer (54)\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (servername.database.windows.net:1433)\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (servername.database.windows.net:1433)\nNet-Lib error during Operation timed out (60)\n')

Один из Первые предложения из других постов - проверить установку FreeTDS. Мой FreeTDS обновлен, и у меня не было проблем с подключением к другому серверу: "server2.cloudapp. azure .com". Оба azure sqlserver's, поэтому я не уверен, что может быть проблема с подключением. С чего бы это? Любая помощь приветствуется.

1 Ответ

0 голосов
/ 02 марта 2020

Я много искал и нашел решение.

Похоже, что модуль pymssql, который вы установили напрямую с помощью pip из pypi.org , не может нормально работать с PaaS Azure SQL. Вам необходимо следовать официальному руководству ( Настройка среды разработки для pyms sql Python development ), чтобы загрузить указанный файл c whl и установить его вручную.

В моем случае я использую Windows ОС с Python 3.7, поэтому я загружаю pymssql-2.1.4-cp37-cp37m-win_amd64.whl. cp37 для python версия 3.7. win для Windows ОС. amd64 для 64-битной версии. Вы должны выбрать правильный, основанный на вашей среде.

Затем установите загруженный модуль с помощью pip install {your_whl_file}. После этого я могу подключиться к своему Azure SQL:

import pymssql

server = 'jackdemo.database.windows.net'
database = 'jackdemo'
username = 'jack@jackdemo'
password = '***********'

cnxn = pymssql.connect(server, username, password, database)
cursor = cnxn.cursor()
cursor.execute("select * from Users")
row = cursor.fetchone()
while row:
    print(str(row[0]) + " " + str(row[1]))
    row = cursor.fetchone()

Результат:

enter image description here


Кстати, я могу попытаться объяснить, почему вы можете подключиться к sql серверу с помощью * .cloudapp. azure .com. Основываясь на пути URI, кажется, что это DNS-имя для Azure VM. Если это так, модуль pyms sql прекрасно работает с сервером sql на этой виртуальной машине, поскольку это не PaaS Azure SQL.

Еще одно предложение - использовать pyodbc. Я вижу образцы из Azure SQL документации использовать его. Это может вызвать меньше проблем.

...