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

标签 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)

最佳答案

使用 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文档以获取更多详细信息。

关于python - 我可以使用 Python 从空 Access 表中提取架构信息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37520428/

相关文章:

python - NetworkX read_dot不继承属性

python - 交互式 Matplotlib 窗口未更新

python - 创建 3 阶 numpy 数组

ms-access - 在 Access 中连接标题和名称字符串

python - 快速读取Python中的列分隔文本数据

python - 如何使 Tornado 中的 SQLAlchemy 异步?

Python Decimal 给出不正确的结果

sql-server - 存储与数据库无关的模式

database - 正确的代码,但不能插入到数据库

python - django + apscheduler - 如何配置 APScheduler 以使用 settings.py 中的 django db 连接数据?