2011-11-23 22 views
1

我正在使用數百個msaccess數據庫。我正在嘗試構建數據庫,表和其他對象的摘要。要找出所有的表和對象在給定的數據庫,我使用查詢如何使用pyodbc執行'GRANT SELECT ON'語句

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

MSysObjects是一個系統表,獲取讀取權限可能有點不方便。獲得VBA和DAO的摘要絕非易事。你不妨閱讀http://www.tek-tips.com/viewthread.cfm?qid=1045679 – Fionnuala

回答

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 

的表格方法的選擇由表,目錄,架構和TABLETYPE過濾。列方法有按照表,目錄,模式和列名稱過濾的選項。

+1

太棒了!非常感謝。 – Jeremy