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

Метод values класса Update

Метод values класса Update задает значения, которые будут присвоены столбцам таблицы при выполнении UPDATE-запроса. Первым параметром метод принимает именованные аргументы, где ключ - это имя столбца, а значение - новое значение для этого столбца. Метод возвращает новый объект Update, что позволяет строить цепочки вызовов.

Синтаксис

update(table).values(**kwargs)

Пример

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

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String from sqlalchemy import 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(), [ {'id': 1, 'title': 'article 1', 'text': 'text 1', 'status': 'draft', 'num': 10}, {'id': 2, 'title': 'article 2', 'text': 'text 2', 'status': 'draft', 'num': 20} ]) stmt = update(articles).values(title='article') conn.execute(stmt) res = conn.execute(articles.select()).fetchall() print(res)

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

[(1, 'article', 'text 1', 'draft', 10), (2, 'article', 'text 2', 'draft', 20)]

Пример

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

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String from sqlalchemy import 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(), [ {'id': 1, 'title': 'article 1', 'text': 'text 1', 'status': 'draft', 'num': 10} ]) stmt = update(articles).values( title='article', status='published', num=100 ) conn.execute(stmt) res = conn.execute(articles.select()).fetchall() print(res)

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

[(1, 'article', 'text 1', 'published', 100)]

Пример

Давайте используем в values выражение столбца, например, увеличим значение num на 5:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String from sqlalchemy import 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(), [ {'id': 1, 'title': 'article 1', 'text': 'text 1', 'status': 'draft', 'num': 10} ]) stmt = update(articles).values(num=articles.c.num + 5) conn.execute(stmt) res = conn.execute(articles.select()).fetchall() print(res)

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

[(1, 'article 1', 'text 1', 'draft', 15)]

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

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