【问题标题】:Locating ODBC Driver 13.0 for SQL Server on Ubuntu Azure VM在 Ubuntu Azure VM 上找到 SQL Server 的 ODBC 驱动程序 13.0
【发布时间】:2019-03-28 00:39:08
【问题描述】:

我有一个 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 时,它没有返回任何结果

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

【问题讨论】:

    标签: python linux azure ubuntu odbc


    【解决方案1】:

    首先,请确保您已在 Azure Ubuntu VM 上通过 apt-get 安装了 unixodbc-dev。那么sqlalchemy需要pymssqlpyodbc模块,可以参考官方文档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 的更多详细信息,请参阅Microsoft SQL Server 的SQLAlchemy 文档。

    【讨论】:

    • 通过让我的driver = 'ODBC+Driver+13+for+SQL+Server' 完美运行!
    • 虽然 Azure 上的 SQL Server 建议使用 13 的 ODBC 字符串,但我将其更改为 17,因为我的 Ubuntu 20.04 与 17 一起使用,并且可以正常工作
    猜你喜欢
    • 2016-04-23
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2017-05-18
    • 2018-07-17
    相关资源
    最近更新 更多