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

Класс Update

Класс Update представляет собой выражение SQL UPDATE и используется для изменения существующих строк в таблице. Первым параметром при передаче в функцию update идет таблица, к которой применяется обновление. Объект Update позволяет задать новые значения через метод values, условие отбора строк через метод where и возвращаемые данные через метод returning.

Синтаксис

from sqlalchemy import update stmt = update(table).values(column=value).where(condition)

Пример

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

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, update engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert().values(id=1, title='article', status='draft', num=1)) stmt = update(articles).where(articles.c.id == 1).values(title='article updated') res = conn.execute(stmt) print(res.rowcount)

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

1

Пример

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

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, update engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert().values(id=1, title='article', status='draft', num=1)) stmt = ( update(articles) .where(articles.c.id == 1) .values(status='published', num=2) .returning(articles.c.title, articles.c.status) ) res = conn.execute(stmt) print(res.fetchall())

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

[('article', 'published')]

Пример

Давайте посмотрим итоговый SQL-запрос, который генерирует объект Update:

from sqlalchemy import Table, Column, Integer, String, MetaData, update metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer), ) stmt = update(articles).where(articles.c.id == 1).values(title='article updated', status='published') print(stmt)

Итоговый SQL запрос:

UPDATE articles SET title = :title, status = :status WHERE articles.id = :id_1

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

  • класс Update,
    который представляет выражение UPDATE
  • метод values,
    который задает новые значения колонок
  • метод where,
    который задает условие отбора строк
  • метод returning,
    который возвращает измененные данные
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить