首页 > 解决方案 > 错误:`pyodbc.drivers()` 在 VSCode 中返回空列表

问题描述

我按照Microsoft 的说明安装其 ODBC 驱动程序,并准备了一个 conda 环境,其中包含必要的包以使用 Python 处理 azure SQL 数据库,包括pyodbc. 我使用了 Ubuntu 的说明,因为我使用的是 Linux Mint 20,而且该选项不可用(并且 Linux Mint 基于 Ubuntu)。

然后我准备了一个小脚本来连接到我创建的测试 azure 数据库:

import pyodbc

configString = (
    f'DRIVER={ODBC Driver 17 for SQL Server};'
    f'SERVER={server};'
    'PORT=1433;'
    f'DATABASE={database};'
    f'UID={username};'
    f'PWD={password}'
)

with pyodbc.connect(configString) as conn:
    with conn.cursor() as cursor:
        cursor.execute('SELECT TOP 3 name, collation_name FROM sys.databases')
        row = cursor.fetchone()
        while row:
            print (str(row[0]) + ' ' + str(row[1]))
            row = cursor.fetchone()

这失败并出现错误('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")
但是该文件存在,如果我仅从终端(而不是从 VSCode 中)运行它,它工作正常。

此外,从pyodbc.drivers()VSCode中返回,但当从终端中的 Python shell 调用时,[]它返回正确的值。['ODBC Driver 17 for SQL Server']

所以问题是:为什么pyodbc无法从 VSCode 中获取驱动程序但从终端获取正确的值?

标签: pythonsqlvisual-studio-codeodbcpyodbc

解决方案


推荐阅读