('42000', "[42000] [Microsoft][ODBC Microsoft Access Driver] 记录无法读取;没有读取权限

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

我正在尝试使用 Python 从 Microsoft Access 数据库中提取数据。我使用了 pyodbc 模块,我的代码如下:

import pyodbc

conn_str = (
    r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};'
    r'DBQ=directory_that_access_the_database;'
    r'DATABASE=name_of_the_database;'
    r'Trusted_Connection=yes;'
)
cnxn = pyodbc.connect(conn_str)
cursor = cnxn.cursor()
cursor.execute('select * from database where database.date = #mm/dd/yyyy#')
for row in cursor.fetchall():
    print(row)

然后它返回一个错误为

('42000', "[42000] [Microsoft][ODBC Microsoft Access Driver] 记录无法读取;没有数据库读取权限。(-1907) (SQLExecDirectW)")

我已经检查了其他堆栈溢出,我也通过

ribbon--Users
和组权限启用了我对这个特定数据库的权限,但仍然返回错误。我的想法是,当我想启用权限时,我错过了一些细节,但我真的不知道如何完成。有人可以帮我解决这个问题吗?

python ms-access pyodbc
1个回答
1
投票

Access ODBC 连接字符串不使用

Database=
Trusted_Connection=
参数。
DBQ=
参数应该是数据库文件的完整路径,包括文件名和扩展名。

所以这行不通

connection_string = (
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
    r'DBQ=C:\Users\Public;'
    r'DATABASE=Database1.accdb;'
)

而这会起作用

connection_string = (
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
    r'DBQ=C:\Users\Public\Database1.accdb;'
)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.