怎样使用pyodbc执行'GRANT SELECT ON'语句

1 投票
1 回答
1180 浏览
提问于 2025-04-17 06:56

我正在处理成百上千个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;

非常感谢你的帮助。

1 个回答

2

试试使用光标的 tablescolumns 方法。我无法在 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 方法可以通过表、目录、模式和表类型来进行筛选。columns 方法则可以通过表、目录、模式和列名来进行筛选。

撰写回答