当我尝试使用pyodbc(在mac上)连接到sql server数据库时:
import pyodbc
server = '####'
database = '####'
username = '####@####'
password = '#####'
driver='{ODBC Driver 13 for SQL Server}'
pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+password)
我收到以下错误:
错误:('01000',“[01000] [unixODBC] [驱动程序管理器]无法打开lib'用于SQL Server的ODBC驱动程序13':找不到文件(0)(SQLDriverConnect)”)
当我在实际的驱动程序位置路径时:
driver='/usr/local/lib/libmsodbcsql.13.dylib'
它开始工作了!
我的 odbcinst.ini
看起来像这样:
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/usr/local/lib/libmsodbcsql.13.dylib
UsageCount=1
如何让我对 driver='{ODBC Driver 13 for SQL Server}'
的引用再次开始工作?
我最初使用this guide来安装驱动程序 . 如果有帮助的话,我在Mac Sierra上使用anaconda?
4 回答
运行:
它产生了:
而不是将文件复制到
/etc/
目录(不确定为什么unixODBC认为他们在那里)我创建了一个指向每个文件的符号链接:这解决了这个问题 .
在我的情况下,我必须将
pyodbc
数据库驱动程序字符串更改为driver='{ODBC Driver 17 for SQL Server}'
实际上,在我的python代码中,pyodbc期待 ODBC Driver 13
但是,当ODBC驱动程序版本更新(因为ubuntu更新)到当前版本 ODBC Driver 17 时,问题就出现了 .
在我的情况下,我有一个Mac OS和folling命令解决了这个问题:
我必须补充一点,如果你使用的是另一个驱动程序(FreeTDS),并且在你的连接字符串中你省略提及它,它将默认为
driver='{ODBC Driver 17 for SQL Server}
或类似的东西 .所以解决方案是不要忘记驱动程序,你的数据库设置将如下所示:
'default': { 'ENGINE': 'sql_server.pyodbc', 'HOST': '127.0.0.1', 'NAME': 'mydb', 'PORT': '1433', 'USER': 'sa', 'PASSWORD': '*****', 'OPTIONS':{ 'driver': 'FreeTDS', 'host_is_server': True, } }