在Ubuntu Azure VM上找到SQL Server的ODBC驱动程序13.0

时间:2019-03-27 15:50:40

标签: python linux azure ubuntu odbc

我有一个Python脚本,需要ODBC驱动程序13.1才能使SQL Server连接并写入SQL Server。我正在尝试在Azure上运行Ubuntu 16.04的Linux VM上设置脚本。我无法找到要在脚本中使用的驱动程序的位置。

我已按照here的说明安装ODBC,它似乎已成功安装。但是,每当我在系统上查找它的安装位置时,都找不到它。

在本地计算机上,我将信息传递给连接字符串,如下所示:

server = '{server name}'
username = '{username}'
password = '{password}'
driver = '/usr/local/lib/libmsodbcsql.13.dylib'

# use following string for database connection
con = sqlalchemy.create_engine('mssql+pyodbc://' + user + ':' + passw + '@' + host + ':' + str(port) + '/' + database + '?' + 'driver' + '=' + driver, echo=False

在Linux VM上,当我从Microsoft安装ODBC时,这是输出的一部分

Preparing to unpack .../msodbcsql_13.1.9.2-1_amd64.deb ...
Unpacking msodbcsql (13.1.9.2-1) ...

该文件路径的其余部分在哪里?当我使用find . .../msodbcsql_13.1.9.2-1_amd64.deb时,没有返回结果

为了使脚本起作用,我需要找到驱动程序在服务器上的位置,以便将该路径传递给脚本。

1 个答案:

答案 0 :(得分:2)

首先,请确保已通过unixodbc-dev在Azure Ubuntu VM上安装了apt-get。然后pymssql需要pyodbcsqlalchemy模块,您可以参考官方文档Python SQL Driver进行安装。

接下来,我为您可以参考的SO线程Microsoft Azure Data warehouse and SqlAlchemy提供了答案,其中包括以下示例代码。

import sqlalchemy

connection_string = "mssql+pyodbc://<user>@<server-host>:<password>@<server-host>.database.windows.net:1433/<database>?driver=ODBC+Driver+13+for+SQL+Server"
engine = sqlalchemy.engine.create_engine(connection_string)
engine.connect()

import sqlalchemy
import urllib

params = urllib.quote_plus("Driver={ODBC Driver 13 for SQL Server};Server=<server-host>.database.windows.net,1433;Database=<database>;Uid=<user>@<server-host>;Pwd=<password>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;")
engine = sqlalchemy.engine.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
engine.connect()

有关带有sqlalchemypyodbc的{​​{1}}的更多详细信息,请参阅Microsoft SQL Server的SQLAlchemy文档。