Pyodbc Azure sql 数据库
Pyodbc Azure sql database
我正在使用 macOs BigSur,我想使用 python 连接到 azure sql 数据库。
我遵循了 Microsoft 文档:
https://docs.microsoft.com/en-us/python/api/overview/azure/sql?view=azure-python
按照本文档设置所有配置并安装 Mac OS 的所有要求。
但是当我 运行 我的 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 link。
我 运行 创建这些 symlink 的代码,但我意识到如果我尝试打开这些文件,它们是空的,如果我尝试转到文件夹并手动打开它们而不是使用终端,我收到无法完成的错误,因为源不存在。
有人遇到过这个错误吗?
最新更新:
我安装了 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 (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,但是当我尝试这样做时,我收到命令不存在的错误
更新
如果你的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
我正在使用 macOs BigSur,我想使用 python 连接到 azure sql 数据库。
我遵循了 Microsoft 文档:
https://docs.microsoft.com/en-us/python/api/overview/azure/sql?view=azure-python
按照本文档设置所有配置并安装 Mac OS 的所有要求。
但是当我 运行 我的 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 link。 我 运行 创建这些 symlink 的代码,但我意识到如果我尝试打开这些文件,它们是空的,如果我尝试转到文件夹并手动打开它们而不是使用终端,我收到无法完成的错误,因为源不存在。 有人遇到过这个错误吗?
最新更新: 我安装了 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 (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,但是当我尝试这样做时,我收到命令不存在的错误
更新
如果你的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