РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
65 of 711 menu

Атрибут _mapping класса Row

Атрибут _mapping класса Row возвращает объект RowMapping, который предоставляет доступ к значениям строки результата по именам колонок. В отличие от самого объекта Row, где доступ осуществляется по индексам, _mapping позволяет обращаться к значениям как к элементам словаря: по ключу-имени колонки. Это особенно удобно при работе с запросами, где важен порядок колонок или когда нужно преобразовать строку в словарь.

Атрибут не принимает параметров и доступен только для чтения. Объект RowMapping поддерживает методы keys, values, items, get, а также оператор in для проверки наличия ключа.

Синтаксис

row._mapping

Пример

Давайте создадим таблицу, выполним запрос и получим первую строку результата:

from sqlalchemy import create_engine, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text('CREATE TABLE articles (id INTEGER, title TEXT)')) conn.execute(text("INSERT INTO articles VALUES (1, 'article')")) res = conn.execute(text('SELECT id, title FROM articles')).first() print(res)

Результат выполнения кода:

(1, 'article')

Пример

Теперь обратимся к значениям строки по именам колонок через атрибут _mapping:

from sqlalchemy import create_engine, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text('CREATE TABLE articles (id INTEGER, title TEXT)')) conn.execute(text("INSERT INTO articles VALUES (1, 'article')")) res = conn.execute(text('SELECT id, title FROM articles')).first() print(res._mapping['id']) print(res._mapping['title'])

Результат выполнения кода:

1 'article'

Пример

Атрибут _mapping можно преобразовать в обычный словарь с помощью функции dict:

from sqlalchemy import create_engine, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text('CREATE TABLE articles (id INTEGER, title TEXT)')) conn.execute(text("INSERT INTO articles VALUES (1, 'article')")) res = conn.execute(text('SELECT id, title FROM articles')).first() print(dict(res._mapping))

Результат выполнения кода:

{'id': 1, 'title': 'article'}

Пример

Объект RowMapping поддерживает методы keys и items, что позволяет перебирать колонки и значения:

from sqlalchemy import create_engine, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text('CREATE TABLE articles (id INTEGER, title TEXT)')) conn.execute(text("INSERT INTO articles VALUES (1, 'article')")) res = conn.execute(text('SELECT id, title FROM articles')).first() print(list(res._mapping.keys())) print(list(res._mapping.items()))

Результат выполнения кода:

['id', 'title'] [('id', 1), ('title', 'article')]

Смотрите также

  • класс Row,
    который представляет строку результата запроса
  • метод _asdict,
    который преобразует строку в словарь
  • атрибут _fields,
    который возвращает кортеж имен колонок
  • атрибут _t,
    который возвращает кортеж значений строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить