- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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/
我需要获取数百个 MS Access DB 的元数据,因此我需要自动化元数据收集过程。 我想查询描述的内容 here ,但在查询数据库之前,我需要对 MSysObjects 进行读取 Access 表
我正在尝试使用 Excel VBA 从 Access 2007 ACCDB 格式数据库获取所有表的列表。 我关注了这篇文章: How can I get table names from an MS
我想在我的项目中使用 MS Access。我尝试与此代码集成。 rs = st.executeQuery("SELECT name FROM MSysObjects where database <>
我正在尝试通过 OleDb 连接到 MS Access 数据库 (.mdb)。我的查询是 SELECT * FROM ListQueries 这给我带来了错误 SQL Execution Error.
我有一个包含约 500 个表的 Access 数据库,所有表中总共有约 16,000 行。我想统计“datecreated”字段在 2019 年 1 月 1 日之前的行数。 我试图通过查询 MsysO
我正在尝试使用 pyodbc Access Access 数据库 (.mdb)。 我可以很好地连接到它— connection = pyodbc.connect(driver='{Microsoft
我继承了一个 Access 应用程序,我对其进行了一些更改。当我启动它时,我收到几个错误,这些错误似乎是指到旧表或查询。目前没有真正属于应用程序的部分是错误的。 消息如下: The record so
如标题所述:我试图从 Access 2010 数据库中的 MSysObjects 中读取数据,但出现异常,告诉我不允许从该表中读取数据。 我可以读出其他非 MSys 表。 SQL Query I am
我正在查询表 MsysObjects 以生成数据库中的对象列表: SELECT MsysObjects.Name, MsysObjects.Type FROM MsysObjects WHERE ((
我是一名优秀的程序员,十分优秀!