Bij*_*dra 6 python sql-server odbc sqlalchemy pyodbc
我正在使用 python 脚本连接到远程 MSSql 服务器。我在 OSX m/c 中安装了所需的库,并尝试使用 python shell 连接,但操作失败。MSSql 未安装在我的开发计算机本地。
Python shell:
>>> cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")
>>>
Run Code Online (Sandbox Code Playgroud)
odbcinst.ini 的内容
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/usr/local/lib/libmsodbcsql.17.dylib
Run Code Online (Sandbox Code Playgroud)
驱动程序的文件参考,它存在。
lrwxr-xr-x 1 biju admin 56 Mar 23 07:57 libmsodbcsql.17.dylib -> ../Cellar/msodbcsql17/17.5.2.1/lib/libmsodbcsql.17.dylib
Run Code Online (Sandbox Code Playgroud)
直接在驱动程序中使用文件路径,代码可以工作。
在 /etc/odbcinst.ini 中又找到了一个 odbcinst 文件
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/usr/local/lib/libmsodbcsql.13.dylib
UsageCount=1
Run Code Online (Sandbox Code Playgroud)
上述路径 /usr/local/lib/libmsodbcsql.13.dylib 中不存在文件。我不确定这两个版本的库是否已正确安装或是否必须删除。
我遇到了同样的问题,我通过将ODBCSYSINI环境变量设置为指向包含的目录来修复它odbcinst.ini- 在我的例子中是/opt/odbc.
export ODBCSYSINI=/opt/odbc
Run Code Online (Sandbox Code Playgroud)
请注意,环境变量必须指向包含文件的目录odbcinst.ini,而不是文件本身。
确保在调用 Python 代码的脚本或 shell 中设置环境变量。
| 归档时间: |
|
| 查看次数: |
12144 次 |
| 最近记录: |