【问题标题】:Pyodbc Azure sql databasePyodbc Azure sql 数据库
【发布时间】:2021-06-22 15:38:24
【问题描述】:

我用的是macOs BigSur,我想用python连接azure sql数据库。

我遵循了 Microsoft 文档:

https://docs.microsoft.com/en-us/python/api/overview/azure/sql?view=azure-python

按照本文档设置所有配置并安装 Mac OS 的所有要求。

https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver15

但是当我运行我的 python 脚本时,我得到了这个错误:

cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")

我安装了 mssql-tools 和 unixodbc

如果我运行命令odbcinst -j

我得到这个输出:

unixODBC 2.3.9
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /Users/<my-user>/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

有人知道这个错误吗?如果您需要更多信息,请问我。非常感谢

编辑: 根据文档,Microsoft 建议使用 odic.ini 和 odbcinst.ini 建立一个 sim 链接。 我运行代码来创建这些符号链接,但我意识到如果我尝试打开这些文件,它们是空的,如果我尝试转到文件夹并手动打开它们而不是使用终端,我会得到它可以的错误' t 完成,因为源不存在。 有人遇到过这个错误吗?

最新更新: 我安装了 FreeTDS 并使用以下配置更新了我的 .odbc.ini:

[my_server]
Description = my_server
TDS_Version = 7.4
Driver = /usr/local/lib/libtdsodbc.so
Server = YOUR.SERVERNAME.HERE.com
Port = 1433

当我运行我的 python 脚本连接到数据库时,我得到以下 Traceback:

Traceback (most recent call last):
  File "database.py", line 11, in <module>
    cnxn = pyodbc.connect('dsn=my_server;'
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libtdsodbc.so' : file not found (0) (SQLDriverConnect)")

事实上,那个位置没有libtdsodbc.so。 在另一个主题中,他们建议使用标志--with-unixodbc 安装 freeTDS,但是当我尝试这样做时,我收到命令不存在的错误

【问题讨论】:

    标签: azure-sql-database pyodbc


    【解决方案1】:

    更新

    如果你的 macOS 是 x64 架构,你可以使用下面的方法来解决问题。

    如果你用的是M1,现在不支持了。


    x64 architecture 的解决方案。

    运行下面的代码,它应该对你有用。

    brew update
    brew install unixodbc
    brew install FreeTDS
    

    然后更新.odbc.ini 文件。

    更多详情,请参考以下博客。

    How to set up ODBC in Mac OS to connect to MS SQL Server for use with Python and R

    【讨论】:

    • 您好,非常感谢您的帮助。但不幸的是,这并不能解决我的问题。我安装了freetds,但我得到libtdsodbc.so不存在的错误,实际上它不存在。如果我尝试使用 --with-uniodbc 安装 freetds,我会收到命令不存在的错误
    • @NaydenVan 你能用错误图片更新你的帖子吗?
    • @NaydenVan 尝试使用其他版本的macos。
    • 我错过了重要的一点。在 Microsoft 文档中,他们声明不支持 macOS M1。我需要找到另一个解决方案
    猜你喜欢
    • 2020-10-20
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2015-11-15
    相关资源
    最近更新 更多