You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pyodbc在Python3.7.2正常运行,Python3.11.3报数据源未找到错误

问题原因及解决方案

报错原因

  1. Python与Access驱动位数不匹配:Python 3.11默认是64位版本,而你之前使用的Python 3.7大概率是32位,对应搭配的也是32位Access驱动。64位Python无法调用32位驱动,直接导致找不到驱动的报错。
  2. 驱动未安装或版本不兼容:pyodbc 4.0.39对驱动的兼容性要求更严格,若Python 3.11所在系统未安装对应版本的64位Access驱动,就会触发该错误。
  3. 驱动名称不匹配:新版Office的Access驱动名称可能存在细微调整,旧连接字符串里的驱动名可能不再适配当前系统中的驱动。

解决步骤

1. 确认Python位数

打开Python终端,执行以下代码:

import sys
print(sys.maxsize > 2**32)  # 返回True为64位,False为32位

2. 安装对应位数的Access驱动

  • 若为64位Python:下载64位的Microsoft Access Database Engine。如果系统已安装32位Office,直接安装会冲突,需用静默安装方式:下载AccessDatabaseEngine_X64.exe后,打开命令提示符执行:
    AccessDatabaseEngine_X64.exe /quiet
    
  • 若为32位Python:直接安装32位的Microsoft Access Database Engine即可。

3. 修正连接字符串

先打开对应位数的ODBC数据源管理器,确认驱动名称:

  • 64位系统:打开C:\Windows\System32\odbcad32.exe,查看「驱动」选项卡中的Access驱动名称
  • 32位系统:打开C:\Windows\SysWOW64\odbcad32.exe,查看对应驱动名称

将查到的驱动名称替换到代码中,同时改用f-string格式化字符串(更清晰不易出错):

import pyodbc

my_db_path = r'C:\testing\mydb.accdb'
my_db_pw = r'djw85nawj12'

# 替换为你从ODBC管理器中查到的驱动名称
driver = '{Microsoft Access Driver (*.mdb, *.accdb)}'
conn = pyodbc.connect(f'DRIVER={driver};DBQ={my_db_path};PWD={my_db_pw}')

内容的提问来源于stack exchange,提问作者R-obert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 01:02:23