Выберите имена столбцов в таблице, используя PyODBC - PullRequest
3 голосов
/ 19 ноября 2010

Я пишу программу на Python, которая выбирает некоторые данные из файла Microsoft Access MDB с помощью PyODBC.

Мне нужно узнать имена столбцов нескольких разных таблиц. В 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?

Ответы [ 3 ]

6 голосов
/ 20 ноября 2010

Мне не удалось найти запрос SQL для этого.Однако я обнаружил, что PyODB имеет метод курсора, который может возвращать список столбцов

# columns in table x
for row in cursor.columns(table='x'):
    print row.column_name
0 голосов
/ 06 марта 2019

Python 3

Для доступа по имени conlumn

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

Для доступа по индексу conlumn

table_row = conn.execute(query)
for row in table_rows:
     print (row[0])
0 голосов
/ 19 ноября 2010

Я не уверен насчет ограничений при запросе этой версии MS-Access, но решение, которое я видел в других подобных ситуациях, - это SELECT * FROM table LIMIT = 0 (или 1 в зависимости). После этого вы сможете собрать возвращенные имена столбцов из результата.

...