Метод keys класса Result
Метод keys класса Result возвращает
список имен колонок результирующего набора.
Метод не принимает параметров и возвращает
объект, подобный списку строк. Имена колонок
соответствуют порядку столбцов в запросе.
Синтаксис
res.keys()
Пример
Давайте создадим таблицу articles и
выполним запрос, чтобы получить имена колонок:
<+python+>
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('''
CREATE TABLE articles (
id INTEGER PRIMARY KEY,
title TEXT,
text TEXT,
status TEXT,
num INTEGER
)
'''))
res = conn.execute(text('SELECT id, title, status FROM articles'))
print(res.keys())
<-python+>
Результат выполнения кода:
['id', 'title', 'status']
Пример
Давайте проверим, что метод возвращает имена колонок в том порядке, в котором они указаны в запросе:
<+python+>
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('''
CREATE TABLE articles (
id INTEGER PRIMARY KEY,
title TEXT,
text TEXT,
status TEXT,
num INTEGER
)
'''))
res = conn.execute(text('SELECT num, title, id FROM articles'))
print(list(res.keys()))
<-python+>
Результат выполнения кода:
['num', 'title', 'id']
Пример
Давайте используем метод keys вместе с
методом fetchall для построчного вывода
данных с именами колонок:
<+python+>
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('''
CREATE TABLE articles (
id INTEGER PRIMARY KEY,
title TEXT,
text TEXT,
status TEXT,
num INTEGER
)
'''))
conn.execute(text('''
INSERT INTO articles (title, status, num)
VALUES ('article', 'published', 1)
'''))
res = conn.execute(text('SELECT id, title, status, num FROM articles'))
cols = res.keys()
for row in res.fetchall():
print(dict(zip(cols, row)))
<-python+>
Результат выполнения кода:
{'id': 1, 'title': 'article', 'status': 'published', 'num': 1}