Как выполнить оператор «GRANT SELECT ON» с помощью pyodbc - PullRequest
1 голос
/ 23 ноября 2011

Я работаю с сотнями баз данных 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 голосов
/ 28 ноября 2011

Попробуйте использовать таблицы и столбцы методы курсора. Я не могу проверить 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

Метод таблиц имеет опции для фильтрации по таблице, каталогу, схеме и типу таблицы. Метод столбцов имеет параметры для фильтрации по именам таблиц, каталогов, схем и столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...