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

Метод one_or_none класса Result

Метод one_or_none класса Result возвращает ровно одну строку результата. Если запрос вернул ровно одну строку, метод возвращает объект Row. Если строк нет, метод возвращает None. Если строк больше одной, метод возбуждает исключение MultipleResultsFound. Параметры методу не передаются.

Синтаксис

Result.one_or_none()

Пример

Давайте создадим таблицу articles, добавим одну запись и получим ее методом one_or_none:

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, text, status, num) " "VALUES ('article', 'sqlite', 'published', 1)" )) conn.commit() res = conn.execute(text('SELECT * FROM articles')) row = res.one_or_none() print(row)

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

(1, 'article', 'sqlite', 'published', 1)

Пример

Если запрос не вернул ни одной строки, метод one_or_none возвращает None:

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.commit() res = conn.execute(text('SELECT * FROM articles')) row = res.one_or_none() print(row)

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

None

Пример

Если запрос вернул больше одной строки, метод one_or_none возбуждает исключение MultipleResultsFound:

<+python+> from sqlalchemy import create_engine, text from sqlalchemy.exc import MultipleResultsFound 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, text, status, num) " "VALUES ('article', 'sqlite', 'published', 1)" )) conn.execute(text( "INSERT INTO articles (title, text, status, num) " "VALUES ('article', 'user', 'draft', 2)" )) conn.commit() res = conn.execute(text('SELECT * FROM articles')) try: row = res.one_or_none() except MultipleResultsFound: print('MultipleResultsFound') <-python+>

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

"MultipleResultsFound"

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

  • класс Result,
    который представляет результат запроса
  • метод one,
    который возвращает ровно одну строку
  • метод first,
    который возвращает первую строку результата
  • метод scalar_one_or_none,
    который возвращает одно скалярное значение или None
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить