首页 > 解决方案 > 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.xpyodbcunixodbc

解决方案


推荐阅读