SQLAlchemy Core — это мощный инструмент для работы с SQL-запросами на чистом Python. Он обеспечивает высокий уровень абстракции от реального SQL, что позволяет нам выполнять различные операции с базой данных без погружения в детали каждой конкретной СУБД. В этой статье мы рассмотрим, как обновлять данные с помощью SQLAlchemy Core.
from sqlalchemy import create_engine, MetaData, Table, update
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
users = Table('users', metadata, autoload_with=engine)
upd = update(users).where(users.c.id == 1).values(name='Alex')
engine.connect().execute(upd)
В примере выше мы используем update()
для создания запроса обновления. Метод where()
определяет условие, при котором запись (или записи) будет обновлена, а values()
указывает, какие именно столбцы следует обновить.
upd = update(users).where(users.c.age < 30).values(status='young')
engine.connect().execute(upd)
Здесь мы обновляем столбец status
для всех пользователей младше 30 лет. Если условие в where()
совпадает с несколькими записями, все они будут обновлены.
from sqlalchemy import and_
upd = update(users).where(and_(users.c.age > 20, users.c.age < 30)).values(status='young adult')
engine.connect().execute(upd)
Используя функцию and_()
, мы можем комбинировать несколько условий для более точного определения записей, которые необходимо обновить.
from sqlalchemy import FetchedValue
upd = update(users).values(last_updated=FetchedValue())
engine.connect().execute(upd)
FetchedValue
позволяет обновлять столбец на основе его текущего значения. Это может быть полезно, например, при обновлении временных меток.
Пример (для СУБД, поддерживающих эту функцию, например, PostgreSQL):
upd = update(users).where(users.c.id == 1).values(name='Alex').returning(users)
result = engine.connect().execute(upd)
print(result.fetchone())
Некоторые СУБД позволяют возвращать обновленные строки после выполнения операции обновления. Это может быть полезно для проверки, какие данные были фактически обновлены.
Обновление данных — это основная операция, которую часто приходится выполнять при работе с базами данных. SQLAlchemy Core предоставляет мощные и гибкие инструменты для эффективного и безопасного обновления данных.
Содержание: