python - 错误:`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 中获取驱动程序但从终端获取正确的值?
解决方案
推荐阅读
- r - R:如何将带有范围的分隔字符串与范围内的实际数字转换?
- reporting-services - SSRS - 根据页码显示/隐藏组行
- python - 如何扩展行包含值列表的数据框?
- c# - 复杂对象的跨 AppDomain 调用性能
- c++ - Boost ASIO - 丢弃的 UDP 数据包,与 UE4 udp 接收器相比损失显着
- swift - 关联类型和“正常”类型之间的区别?
- debugging - 为什么通用 UWP 应用显示错误?
- node.js - AWS SAM FindInMap 未填充变量
- html - 通过链接列表访问 Shopify Collection 元字段
- sas - proc sql 选择大量文件的问题