Как использовать pyodbc в Azure Machine Learning Workbench

Я пытаюсь использовать pyodbc для импорта фрейма данных в Azure ML Workbench. Это работает при локальных запусках, но не для докеров. Ошибка при попытке установить соединение с SQL Server, потому что драйвер отсутствует.

cnxn = pyodbc.connect('DRIVER='{ODBC Driver 13 for SQL Server}';PORT=1433;SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password)

Сообщение об ошибке:

pyodbc.Error: ('01000', «[01000] [unixODBC] [Диспетчер драйверов] Не удается открыть библиотеку« Драйвер ODBC 13 для SQL Server »: файл не найден (0) (SQLDriverConnect)»)

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

ДОБАВИТЬ odbcinst.ini /etc/odbcinst.ini

ЗАПУСТИТЬ apt-get update

ЗАПУСТИТЬ apt-get install -y tdsodbc unixodbc-dev

ЗАПУСТИТЬ apt install unixodbc-bin -y

RUN apt-get clean -y

Однако я новичок в докере и не могу понять, где разместить эти строки в ML Workbench. Кажется, что файл докера создается через docker.compute и conda_dependencies.yml, но ничего похожего на приведенные выше строки нельзя найти ни в одном из них, ни в каком-либо другом решении. .




Ответы (1)


Вы можете создать образ докера с нужными вам зависимостями и указать имя своего образа внутри файла docker.compute:

baseDockerImage:<your docker image name>

Я создал изображение azml_pyodbc, вы можете попробовать использовать его с:

baseDockerImage: "aksanakuzmitskaya/azml_pyodbc:firsttry"
DRIVER='{ODBC Driver 17 for SQL Server}'
person Aksana Kuzmitskaya    schedule 10.04.2018
comment
Когда я добавляю эту строку DRIVER = '{ODBC Driver 17 for SQL Server}' в docker.compute, она не работает, есть идеи? Спасибо! - person snowneji; 06.06.2018
comment
В docker.compute указывается только baseDockerImage. ДРАЙВЕР = '{Драйвер ODBC 17 для SQL Server}' добавлен в скрипт python, где будет установлен SQL-сервер. пример: cnxn = pyodbc.connect ('DRIVER =' {драйвер ODBC 17 для SQL Server} '; PORT = 1433; SERVER =' + server + '; PORT = 1443; DATABASE =' + database + '; UID =' + username + ' ; PWD = '+ пароль) - person Aksana Kuzmitskaya; 06.06.2018