Не удается подключиться к серверу Azure SQL с python - PullRequest
0 голосов
/ 25 февраля 2020

Я несколько раз пытался подключиться к базе данных Azure SQL.

Я использовал следующий код:

import pyodbc
sqlConnection = pyodbc.connect(
                " Driver={ODBC Driver 17 for SQL Server};"
                "Server=tcp:mftaccountinghost.database.windows.net,1433;"
                "Database=mft_accounting;Uid=localhost;Pwd=#####;"
                "Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;");

cursor = sqlConnection.cursor()
cursor.execute("select * from dbo.error_bills_catch")
for row in cursor:
    print(cursor)


firstColumn = row[0]


cursor.close()

sqlConnection.close()

Я получаю следующую ошибку: pyodb c .OperationalError: ('08001', '[08001] [Microsoft] [ODB C Драйвер 17 для SQL Сервер] Клиент не может установить sh соединение (0) (SQLDriverConnect) ')

Может кто-нибудь помочь?

Это моя строка подключения: Драйвер = {ODB C Драйвер 13 для SQL Сервер}; Сервер = tcp: mftaccountinghost.database. windows. net, 1433; База данных = mft_accounting; Uid = localhost; Pwd = {your_password_here}; Encrypt = yes; TrustServerCertificate = no; Время ожидания подключения = 30;

Я использую MacOs и несколько раз пытался переустановить драйвер, но все еще безрезультатно.

Спасибо.

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Пожалуйста, убедитесь, что вы создали SQL логин с разрешением для подключения к базе данных, потому что "localhost" может быть недопустимым логином. Вы можете попытаться создать пользователя автономной базы данных, как показано ниже, и использовать тот логин для подключения к базе данных. Вы создали этот логин с именем localhost?

CREATE USER yourlogin WITH PASSWORD = 'Yh-EhGFjh+';
GO
exec sp_addRoleMember 'db_datareader', 'yourlogin'; 
GO

Убедитесь, что вы создали правило брандмауэра, как описано в этой документации, а также правильное имя сервера и базы данных (вы не ошиблись их).

Вы также должны убедиться, что вы установили рекомендуемый драйвер Python из здесь .

Используя этот драйвер, попробуйте следующие строки кода.

import pyodbc
server = 'mftaccountinghost.database.windows.net'
database = 'mft_accounting'
username ='TheLoginYouCreatedAbove'
password = '****'
driver= '{ODBC Driver 17 for SQL Server}'

cnxn = pyodbc.connect('DRIVER='+driver+
                      ';SERVER='+server+
                      ';PORT=1433;DATABASE='+database+
                      ';UID='+username+
                      ';PWD='+ password)

cursor = cnxn.cursor()
cursor.execute("SELECT * FROM dbo.error_bills_catch")
row = cursor.fetchone()
while row:
    print (str(row[0]) + " " + str(row[1]))
    row = cursor.fetchone()
0 голосов
/ 26 февраля 2020

Сообщение об ошибке Client unable to establish connection указывает на проблему с сетью.

Возможные причины этого следующие:

  1. Неправильный адрес сервера.

  2. Проблема с локальной сетью. Например, ваша локальная сеть может запретить трафик через порт 1433.

  3. Ваш IP-адрес не был добавлен в список разрешенных брандмауэров Azure SQL. Обратитесь к руководству: Используйте портал Azure для управления правилами брандмауэра IP уровня сервера


Обновление

Я зарегистрировался в моей маме c, и получил успех. Вот мои шаги:

  1. Установить ODB C драйвер
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql mssql-tools
Установить pyodbc модуль в python
pip install pyodbc

Добавить мой IP-адрес в список разрешенных в Azure Портал

Скрипт:

import pyodbc

cnxn = pyodbc.connect(
    "Driver={ODBC Driver 17 for SQL Server};"
    "Server=tcp:jackdemo.database.windows.net,1433;"
    "Database=jackdemo;"
    "Uid=jack;"
    "Pwd=************;"
    "Encrypt=yes;"
    "TrustServerCertificate=no;"
    "Connection Timeout=30;")

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...