Подключение к Azure SQL Server через Jupyter (проблемы!) - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь подключиться к экземпляру Azure SQL Server с ноутбука с установленным Jupyter.Совершенно новичок в этом, но есть проблемы, которые, вероятно, просто решить.

Я установил 64-битный Python 3.7, Jupyter и AMD64 v17 pyodbc через pip.Однако, когда я пытаюсь подключиться через Jupyter, у меня возникают проблемы с подключением или драйвером, я не совсем уверен.

Ниже приведен код, который я пытаюсь запустить, чтобы подключиться и вернуть простой запрос из первых 10 строк.


import pyodbc
server = 'xxxsqlserver.database.windows.net'
database = 'xxx.dbo.table'
username = 'user'
password = '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 TOP 10 * FROM xxx.dbo.table")
row = cursor.fetchone()
while row:
    print (str(row[0]) + " " + str(row[1]))
    row = cursor.fetchone()

Ниже приводится сообщение об ошибке, которое я получаю:


InterfaceError Traceback (последний последний вызов) в 5 пароль = 'пароль'6 driver = '{ODBC Driver 17 для SQL Server}' ----> 7 cnxn = pyodbc.connect ('DRIVER =' + driver + '; SERVER =' + server + '; PORT = 1433; DATABASE =' + database + '; UID = '+ username +'; PWD = '+ пароль) 8 cursor = cnxn.cursor () 9 cursor.execute ("ВЫБРАТЬ ТОП 10 * ОТ xxx.dbo.table")

InterfaceError: ('IM002 ',' [IM002] [Microsoft] [Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию (0) (SQLDriverConnect) ')


Если я меняю драйвер13 Я получаю другую ошибку


InterfaceError: ('28000', '[28000] [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server] Вход в систему faiпривело для пользователя \ 'пользователь \'.(18456) (SQLDriverConnect);[28000] [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server] Не удается открыть базу данных «xxx.dbo.table», запрошенную при входе в систему.Ошибка входа(4060);[28000] [Microsoft] [Драйвер ODBC 13 для SQL Server] Недопустимый атрибут строки подключения (0);[28000] [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server] Ошибка входа для пользователя \ 'пользователь \'.(18456);[28000] [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server] Не удается открыть базу данных «xxx.dbo.table», запрошенную при входе в систему.Ошибка входа(4060);[28000] [Microsoft] [Драйвер ODBC 13 для SQL Server] Недопустимый атрибут строки подключения (0) ')


Чувствуется, что драйвер делает что-то не так, или ягде-то есть смещение.Примечание. Я не устанавливал драйверы версии 13, но у меня установлена ​​система SSMS, в которой некоторые из них установлены, и это прекрасно подходит для платформы Azure.

Есть идеи?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Я также столкнулся с той же ошибкой при подключении к базе данных SQL Azure. Ошибка исчезла после изменения имени драйвера с DRIVER={ODBC Driver 17 for SQL Server} на DRIVER={SQL Server}, например:

import pyodbc
server = '<sql-server-name>.database.windows.net'
database = '<database>'
username = '<username>'
password = '<password>'
driver='{SQL Server}'

cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT TOP 10 * FROM dbo.allOrders")
row = cursor.fetchone()
while row:
    print (str(row[0]) + " " + str(row[1]))
    row = cursor.fetchone()
0 голосов
/ 17 мая 2019

Привет, судя по всему, это может быть из-за того, что ваши драйверы ODBC не установлены должным образом. Это, скорее всего, потому, что вы неправильно форматируете строку. Итак, вот полный список того, что вам нужно сделать:

  1. Установите правильные драйверы ODBC для подключения к SQLServer

Конечно, это зависит от вашей операционной системы. Если у вас MacOS, вы можете установить его с помощью homebrew следующим образом:

brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql17 mssql-tools

Если вы не знаете, что такое доморощенный, взгляните на официальный веб-сайт homebrew . Если это не ваша операционная система, ознакомьтесь с инструкциями для конкретной ОС в этом руководстве .

  1. Как только вы это сделаете, обязательно следуйте инструкциям в конце установки , где они сообщают вам, какие изменения необходимо внести в ваши точечные файлы, чтобы заставить ODBC работать должным образом.

  2. Убедитесь, что строка подключения установлена ​​правильно. Строка подключения находится в разделе «Строки подключения» базы данных SQLServer и в разделе ODBC:

Connection String Image

  1. Если у вас есть строка подключения, используйте fstrings или функцию .format() для строки, чтобы заменить фрагмент строки, который говорит Pwd={your_password_here}

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

...