2016-05-30 24 views
1

私は〜300データベースをマージする大きなプロジェクトの一部としてMicrosoft Accessデータベースからスキーマを抽出しようとしています。私の現在のコードを使用すると、フィールド名ではなくテーブル名だけを取得できます。Pythonで空のAccessテーブルからスキーマ情報を抽出できますか?

私はこのwin32comコードスニペットを使用してきたが、私は他の提案(http://code.activestate.com/recipes/528868-extraction-and-manipulation-class-for-microsoft-ac/?in=user-4074475

db = AccessDb('''c:\x.mdb''') 
tbls = db.getTables() 
for tbl in tbls: 
    fields = tbl.getFields() 
    for field in fields: 
     print '%s - %s' %(tbl,field) 
+0

'print'%s - %s '%(tbl.Name、field.Name) 'のようなものではいけませんか? – marlan

+0

@marlan - それは私が期待していたものですが、tbl.getFields()は何も返されませんでした。正しく適用する方法を知らないことがあります。 – tomtomnz

答えて

1

空のためにも、あなたが探している情報を明らかにするpyodbcでcursor.tables()cursor.columns()メソッドを使用して開いていますテーブル。例えば

# -*- coding: utf-8 -*- 
import pyodbc 
connStr = (
    r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" 
    r"DBQ=C:\Users\Gord\Desktop\Test.accdb;" 
    ) 
conn = pyodbc.connect(connStr) 
crsr = conn.cursor() 
table_list = [x[2] for x in crsr.tables() if x[3]=='TABLE'] 
for table_name in table_list: 
    column_list = [x[3] for x in crsr.columns(table_name)] 
    for column_name in column_list: 
     print('[{0}].[{1}]'.format(table_name, column_name)) 
crsr.close() 
conn.close() 

は、より多くの詳細については、pyodbc cursorマニュアルを参照してください。

関連する問題