gpt4 book ai didi

python - pyodbc Access 数据库 MSysObjects 权限问题

转载 作者:行者123 更新时间:2023-11-28 16:48:29 26 4
gpt4 key购买 nike

我正在尝试使用 pyodbc Access Access 数据库 (.mdb)。

我可以很好地连接到它—

connection = pyodbc.connect(driver='{Microsoft Access Driver (*.mdb)}', dbp=path, pwd=password)

但我无法查询 MSysObjects 来获取其表的列表—

cursor = connection.cursor()
cursor.execute('select * from MSysObjects where Type=1 and Flags=0')

它给了我——

Record(s) cannot be read; no read permission on 'MSysObjects'. (-1907) (SQLExecDirectW)

浏览了一下,好像是因为数据库被“保护”了。

我无法运行 Access 来更改它。有什么地方可以以编程方式解决这个问题吗?我需要知道数据库用户或类似信息吗?

I've seen a workaround in Visual Basic — 有没有一种方法可以在 Python 中进行调整?我想我需要一个不同的库 (OLEDB)。

谢谢!

最佳答案

解决方案是使用 cursor.tables(),如下面的代码片段所示:

import pyodbc
connection = pyodbc.connect(driver='{Microsoft Access Driver (*.mdb)}', dbp=path, pwd=password)
cursor = connection.cursor()
tableNames = [x[2] for x in cursor.tables().fetchall() if x[3] == 'TABLE']

可能有一种更简洁的编码方式,但我很着急 ;)

(归功于那些对原始问题发表评论的人;我只是发布了这段代码,因为无论如何我都会把它写到我的笔记中)

关于python - pyodbc Access 数据库 MSysObjects 权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com