我正在使用数百个msaccess数据库。我正在尝试构建数据库,表和其他对象的摘要。为了找出给定数据库中的所有表和对象,我使用查询
select * from MSysObjects
但是,我收到了pyodbc错误消息
[Microsoft][ODBC Microsoft Access Driver] Record(s) cannot be read; no read permission on 'MSysObjects'
如何以编程方式更改所有msaccess数据库的权限。我尝试使用'GRANT SELECT ON'语句,但我收到了错误消息
[Microsoft][ODBC Microsoft Access Driver] Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'
我使用的连接字符串是这种形式
Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\sample.mdb;
非常感谢你的帮助。
答案 0 :(得分:2)
尝试使用光标的tables和columns方法。我无法测试Access 2003或2007,但以下适用于Access 2010:
import pyodbc
connection = pyodbc.connect('Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\Username\Desktop\Database.accdb;')
cursor = connection.cursor()
for row in cursor.tables():
print row.table_name
for row in cursor.columns():
print row.column_name
tables方法具有按表,目录,架构和tableType过滤的选项。 Columns方法具有按表,目录,模式和列名称进行筛选的选项。