无法将Python连接到MS Access 2016

问题描述 投票:0回答:1

以下是配置:1.Python-Win32上的Python 3.8.1(tags / v3.8.1:1b293b6,2019年12月18日,23:11:46)[MSC v.1916 64位(AMD64)]2.MS Access 2016 MSO(16.0.12624.20348)64位3.Microsoft Access驱动程序(* .mdb,*。accdb)16.00.4513.10004.已安装Microsoft Access Database Engine 2016可再发行]

在尝试创建连接时遇到错误:

导入pyodbc

conn = pyodbc.connect(r'Driver = {Microsoft Access驱动程序(* .mdb,* .accdb)}; DBQ = C:\ Users \ tejas \ Documents \ First.accdb;')cursor = conn.cursor()

错误:追溯(最近一次通话):文件“ C:\ Users \ tejas \ eclipse-workspace \ HelloWorld \ DB \ Insert.py”,第3行,在conn = pyodbc.connect(r'Driver = {Microsoft Access驱动程序(* .mdb,* .accdb)}; DBQ = C:\ Users \ tejas \ Documents \ First.accdb;')pyodbc.Error :(“ HY000”,“ [HY000] [Microsoft] [ODBC Microsoft Access驱动程序]您尝试打开的数据库需要较新版本的Microsoft Access。(-1073)(SQLDriverConnect); [HY000] [Microsoft ] [ODBC Microsoft Access驱动程序]您尝试打开的数据库需要较新版本的Microsoft Access。(-1073)')

我经历了其他类似的问题,尝试了各种选择,但到目前为止还没有运气。任何帮助,将不胜感激。

python-3.x ms-access pyodbc
1个回答
0
投票

[[Microsoft] [ODBC Microsoft Access驱动程序]您尝试打开的数据库需要较新版本的Microsoft Access。

运行此代码:

# path to the file you want to check
file_path = r"C:\Users\Public\my_db.accdb"

with open(file_path, "rb") as f:
    type_byte = f.read(21)[20]
    print(f"file type {type_byte}")

产生的“文件类型5”,确认它是一个Access 2016数据库文件,已被修改为包括新"Large Number" (BIGINT) type的列。

不幸的是,Access 2016数据库引擎可再发行组件尚未更新以使用这些文件,因此,如果我们尝试,目前ACE ODBC驱动程序将抛出上述错误。

我不知道Access 2016 Runtime是否已更新为可以使用这些文件。我对此表示怀疑,但是如果有的话,[允许我们通过pywin32使用ACE.DAO处理此类文件。 (从未尝试过。)

© www.soinside.com 2019 - 2024. All rights reserved.