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

Метод returning класса Insert

Метод returning класса Insert указывает, какие столбцы или SQL-выражения должны быть возвращены базой данных после выполнения команды INSERT. Это позволяет получить сгенерированные значения, например автоинкрементный первичный ключ, значения по умолчанию или вычисляемые на стороне СУБД поля, без выполнения дополнительного запроса SELECT. Метод принимает произвольное число столбцов таблицы или выражений и возвращает новый объект Insert.

Синтаксис

insert(table).returning(*columns)

Пример

Давайте вставим строку в таблицу и вернем сгенерированный идентификатор:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), ) metadata.create_all(engine) stmt = articles.insert().returning(articles.c.id) with engine.connect() as conn: res = conn.execute(stmt, {'title': 'article', 'text': 'some text'}) print(res.fetchone())

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

<+python+> (1,) <-python+>

Пример

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

<+python+> from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('status', String), ) metadata.create_all(engine) stmt = articles.insert().returning(articles.c.id, articles.c.title) with engine.connect() as conn: res = conn.execute(stmt, {'title': 'article', 'status': 'draft'}) print(res.fetchone()) <-python+>

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

<+python+> (1, 'article') <-python+>

Пример

Давайте выполним вставку нескольких строк и получим все возвращенные значения:

<+python+> from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) metadata.create_all(engine) stmt = articles.insert().returning(articles.c.id, articles.c.title) with engine.connect() as conn: res = conn.execute(stmt, [ {'title': 'article 1'}, {'title': 'article 2'}, ]) print(res.fetchall()) <-python+>

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

<+python+> [(1, 'article 1'), (2, 'article 2')] <-python+>

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

  • класс Insert,
    который представляет команду вставки
  • метод values,
    который задает значения для вставки
  • метод inline,
    который включает inline-режим выполнения вставки
  • метод from_select,
    который строит вставку из выборки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить