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

Функция update

Функция update создает объект запроса для обновления существующих записей в таблице. Первым параметром функция принимает таблицу или ORM-класс, к которому применяется обновление. Метод where задает условие отбора строк, а метод values - новые значения полей.

Синтаксис

update(table).where(condition).values(field=value)

Пример

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

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', text='text', status='draft', num=1 )) stmt = ( update(articles) .where(articles.c.id == 1) .values(title='new article') ) conn.execute(stmt) res = conn.execute(articles.select()).fetchall() print(res)

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

[(1, 'new article', 'text', 'draft', 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(), [ {'id': 1, 'title': 'article', 'text': 'text', 'status': 'draft', 'num': 1}, {'id': 2, 'title': 'article', 'text': 'text', 'status': 'draft', 'num': 2}, ]) stmt = ( update(articles) .where(articles.c.status == 'draft') .values(status='published', num=10) ) conn.execute(stmt) res = conn.execute(articles.select()).fetchall() print(res)

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

[(1, 'article', 'text', 'published', 10), (2, 'article', 'text', 'published', 10)]

Пример

Давайте посмотрим, какой SQL-запрос генерирует функция update:

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), ) stmt = ( update(articles) .where(articles.c.id == 1) .values(title='article', status='published') ) print(stmt)

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

UPDATE articles SET title=?, status=? WHERE articles.id = ?

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

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