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

Метод _asdict

Метод _asdict класса Row возвращает представление строки результата в виде словаря dict. Ключами словаря становятся имена столбцов выборки, а значениями - соответствующие им значения из строки. Метод не принимает параметров и всегда возвращает новый объект словаря. Это удобно, когда нужно получить данные строки в привычном формате ключ-значение, а не обращаться к полям через атрибуты или индексы.

Синтаксис

row._asdict()

Пример

Давайте создадим таблицу articles, вставим одну строку и получим ее в виде словаря через метод _asdict:

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 (id, title) VALUES (1, 'article')")) res = conn.execute(text('SELECT id, title FROM articles')) row = res.fetchone() print(row._asdict())

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

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

Пример

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

<+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, title TEXT)')) conn.execute(text("INSERT INTO articles (id, title) VALUES (1, 'article')")) conn.execute(text("INSERT INTO articles (id, title) VALUES (2, 'user')")) res = conn.execute(text('SELECT id, title FROM articles')) for row in res: print(row._asdict()) <-python+>

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

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

Пример

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

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 (id, title) VALUES (1, 'article')")) res = conn.execute(text('SELECT id, title FROM articles')) row = res.fetchone() data = row._asdict() print(type(data)) print(data['id']) print(data['title'])

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

<class 'dict'> 1 article

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

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