我正在尝试使用 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
和组权限启用了我对这个特定数据库的权限,但仍然返回错误。我的想法是,当我想启用权限时,我错过了一些细节,但我真的不知道如何完成。有人可以帮我解决这个问题吗?
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;'
)