Docker 如何在Azure机器学习工作台中使用pyodbc

Docker 如何在Azure机器学习工作台中使用pyodbc,docker,pyodbc,azure-machine-learning-studio,azure-machine-learning-workbench,Docker,Pyodbc,Azure Machine Learning Studio,Azure Machine Learning Workbench,我正在尝试使用pyodbc在Azure ML Workbench中导入数据帧。这适用于本地运行,但不适用于docker。尝试建立与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在Azure ML Workbench中导入数据帧。这适用于本地运行,但不适用于docker。尝试建立与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][Driver Manager]无法打开 库“SQL Server的ODBC驱动程序13”:未找到文件(0) (SQLDriverConnect)”)

在搜索解决方案时,我发现我可以将这些行放在docker文件中

添加odbcinst.ini/etc/odbcinst.ini

运行apt获取更新

运行apt get install-y tdsodbc unixodbc dev

运行apt安装unixodbc bin-y

跑得干干净净


然而,我是docker的新手,不知道将这些行放在ML工作台的何处。docker文件似乎是通过docker.computeconda_dependencies.yml生成的,但在解决方案中的这些或任何其他行中都找不到与上述行类似的内容。

您可以使用所需的依赖项构建docker映像,并在docker.compute文件中指定映像名称:

baseDockerImage:<your docker image name>

当我在docker.compute中添加这行“DRIVER='{ODBC DRIVER 17 for SQL Server}'时,它不起作用,有什么想法吗?谢谢在docker.compute中,仅指定baseDockerImage。DRIVER={ODBC DRIVER 17 for SQL Server}被添加到将要建立SQL Server的python脚本中。例如:cnxn=pyodbc.connect('DRIVER='{ODBC DRIVER 17 for SQL Server}';PORT=1433;Server='+Server+';PORT=1443;DATABASE='+DATABASE+';UID='+username+';PWD='+password)
baseDockerImage: "aksanakuzmitskaya/azml_pyodbc:firsttry"
DRIVER='{ODBC Driver 17 for SQL Server}'