我可以使用Python从空Access表中提取架构信息吗?

时间:2016-05-30 07:56:32

标签: python python-2.7 ms-access

我试图从Microsoft Access数据库中提取架构,作为合并~300个数据库的大型项目的一部分。使用我当前的代码,我只能获取表名,而不是字段名。

我一直在使用此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)

1 个答案:

答案 0 :(得分: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文档。