3

我正在编写一个 Python 程序,它使用 PyODBC 从 Microsoft Access mdb 文件中选择一些数据。

我需要发现几个不同表的列名。在 SQL Server 中,这可以通过使用类似的查询来完成

SELECT c.name FROM sys.columns c, sys.tables t
WHERE c.object_id = t.object_id
AND t.name = tableName

但该查询在 Access 中不起作用。和

SELECT MSysObjects.Name FROM MSysObjects
WHERE (((MSysObjects.Flags)=0) AND ((MSysObjects.Type)=1))
ORDER BY MSysObjects.Name

我可以获得非链接表名的列表,但 MSysObject 似乎不包含列名列表。

有没有办法使用 SQL 来获取 Access 数据库中表的列名?

4

3 回答 3

8

我无法找到一个 SQL 查询来完成此操作。但是,我确实发现 PyODB 有一个可以返回列列表的游标方法

# columns in table x
for row in cursor.columns(table='x'):
    print row.column_name
于 2010-11-19T21:21:31.047 回答
1

蟒蛇 3

按列名访问

table_row = conn.execute(query)
for row in table_rows:
     print (row.nameColumn)

按列索引访问

table_row = conn.execute(query)
for row in table_rows:
     print (row[0])
于 2019-03-06T11:44:06.033 回答
0

我不确定查询该版本的 MS-Access 的限制,但我在其他类似情况下看到的解决方案是 SELECT * FROM table LIMIT = 0(或 1 取决于)。然后,您可以从结果中收集返回的列名。

于 2010-11-19T17:51:40.590 回答