python-3.x - PYODBC 找不到 MSSQL 的驱动程序
问题描述
我正在尝试使用如下所示的简单 python 脚本连接到 SQL Server。
import pyodbc
details = {
'server': '<hostname>',
'database': '<database>',
'username': '<username>',
'password': '<password>'
}
connect_string = 'DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={server};PORT=1443;DATABASE={database};UID={username};PWD={password}'.format(**details)
connection = pyodbc.connect(connect_string)
print(connection)
唯一的区别是我出于明显的原因删除了配置值。但是,当我运行此脚本时,出现以下错误:
Traceback (most recent call last):
File "connect.py", line 12, in <module>
connection = pyodbc.connect(connect_string)
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")
作为参考,运行的输出odbcinst -j
给了我:
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/bipvanwinkle/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
cat /etc/odbcinst.ini
:
[SQLServer]
Description = ODBC Driver 17 for SQL Server
Driver = /usr/lib/x86_64-linux-gnu/libodbc.so
Setup = /usr/lib/x86_64-linux-gnu/libodbc.so.1
UsageCount = 1
FileUsage = 1
cat /etc/odbc.ini
:
[SQLServer]
Description = ODBC Driver 17 for SQL Server
Driver = /usr/lib/x86_64-linux-gnu/libodbc.so
Servername =
Database =
UID =
Port = 1433
ls /usr/lib/x86_64-linux-gnu/libodbc.so
:/usr/lib/x86_64-linux-gnu/libodbc.so
ldd /usr/lib/x86_64llinux-gnu/libodbc.so
:
linux-vdso.so.1 (0x00007ffc86bec000)
libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007f9841306000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f98410e7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9840cf6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9840af2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f984177d000)
如果有帮助,/etc/odbcinst.ini 和 /etc/odbc.ini 最初都是空的。我使用了我在网上找到的模板来填写它们。我肯定会犯错误。
有什么想法我哪里出错了吗?
PS 我在 Ubuntu 17.10 上运行它
解决方案
推荐阅读
- python-3.x - 给定两个数字的输入,如何在换行符上打印数字列表的切片范围
- git - Git - 在另一个分支发生重大变化后重新创建一个分支是否很好?
- java - 用于本地化我的应用程序的 Google 翻译 API
- python - 为什么从最后一个元素分配的列表中的dict?
- jquery - 附加后删除类
- vba - 在VBA中按条件检查删除行
- laravel - Laravel:switch 在一个项目中正常工作,但在另一个项目中崩溃
- chart.js - 如何在 Chart.js 中以不同颜色更改 y 轴标签的颜色
- docker - 我可以避免为蓝绿部署重复我的服务定义吗?
- java - 水平圆形图像以显示用户个人资料图片