Мне необходимо получить названия столбцов в базе данных SQLite

Мне нужно представить данные из базы данных в форме {'col_name1': 'значение', 'col_name2': 'значение'} с помощью библиотеки sqlite3 на Python. Как получить значение из таблицы я знаю, однако как получить название столбца я не понимаю. Используя PRAGMA table_info('TEST'), где 'TEST' - название моей таблицы, выводятся все данные, однако мне нужно получить лишь названия столбцов. Прошу у Вас помощи!


Ответы (2 шт):

Автор решения: Сабир Исламов

Ну можно воспользоваться запросом:

SELECT * FROM sqlite_master; или SELECT sql FROM sqlite_master;

Поле sql таблицы sqlite_master содержит запрос которым таблица была создана, и его можно распарсить на нужные данные: название столбцов, тип столбцов, ограничения которые наложены на столбец. Но нужно учитывать, что запрос создавший нужную для анализа таблицу храниться в sqlite_master as-is то есть в первозданном виде, если там человек создавший исследуемую БД решил натыкать ненужных переносов строк, то все они там будут сохраненными. Даже комментарии которые были в коде создания таблицы будут там сохранены. По этому перед парсингом данных из этой таблицы следует очистить её от лишнего (лишние пробелы, переносы строк, возможные комментарии и та далее), а уже после этого можно проводить анализ.

p.s.: если вспомню ещё способы, то напишу) p.p.s: так же в этой таблице храниться информация о созданных индексах, представлениях, триггерах и так далее, по этому имеет смысл указывать вместе с квалификатором отбора WHERE type LIKE "table";

→ Ссылка
Автор решения: dprofe

Из представленного Вами запроса PRAGMA table_info("TEST") можно просто убрать лишнюю информацию. Например

cur.execute('PRAGMA table_info("TEST")')
column_names = [i[1] for i in cur.fetchall()]
print(column_names)

Информация содержится в виде кортёжа (номер столбца (с нуля), название столбца, тип данных, может ли быть null, значение по умолчанию, является ли primary key)

→ Ссылка