【问题标题】:how do I execute a 'GRANT SELECT ON' statement using pyodbc如何使用 pyodbc 执行“GRANT SELECT ON”语句
【发布时间】:2011-11-23 19:30:47
【问题描述】:

我正在使用数百个 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;

非常感谢您的帮助。

【问题讨论】:

标签: python ms-access pyodbc grant


【解决方案1】:

尝试使用光标的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 方法具有按表、目录、模式和 tableType 过滤的选项。 Columns 方法具有按表、目录、模式和列名过滤的选项。

【讨论】:

  • 太棒了!非常感谢。
猜你喜欢
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 2012-03-20
  • 2019-03-13
  • 1970-01-01
相关资源
最近更新 更多