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

标签 python linux azure ubuntu odbc

我有一个 python 脚本,需要 ODBC Driver 13.1 for 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 它没有返回任何结果

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

最佳答案

首先,请确保您已通过 apt-get 在 Azure Ubuntu VM 上安装了 unixodbc-dev。那么sqlalchemy需要使用pymssql或者pyodbc模块,可以引用官方文档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()

有关 sqlalchemypyodbcpymssql 的更多详细信息,请参阅 SQLAlchemy 文档 Microsoft SQL Server .

关于python - 在 Ubuntu Azure VM 上找到 SQL Server 的 ODBC 驱动程序 13.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55381398/

相关文章:

linux - 如何在linux脚本中提取字符串中的数字和特殊字符

linux - 使用正则表达式

azure - 如何为服务主体设置 secret 过期警报?

python - 查找与不同年份匹配的所有月份、日期和时间,并取它们的平均值

python - 递归立方体法

python - 模块未找到错误 : No module named 'pandas.rpy'

linux - 构建 Google Chrome NaCl 应用程序 .nexe 文件时找不到有效的库

Azure 成本管理 API - 想要连接使用 API?

azure - azure 中的域设置

python - 如何在Python中根据另一个pandas数据帧的索引获取一个pandas数据帧的元素?