1

我正在使用 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

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

编辑:按照文档,微软建议从 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,那个位置没有。在另一个主题中,他们建议使用标志安装 freeTDS,--with-unixodbc但是当我尝试这样做时,我收到命令不存在的错误

4

1 回答 1

1

更新

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

如果您使用 M1,现在不支持。

在此处输入图像描述


的解决方案x64 architecture

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

brew update
brew install unixodbc
brew install FreeTDS

然后更新.odbc.ini文件。

有关详细信息,请参阅以下博客。

如何在 Mac OS 中设置 ODBC 以连接到 MS SQL Server 以与 Python 和 R 一起使用

于 2021-06-23T03:53:35.527 回答