Sqlalchemy Вставка или обновление (Upsert) с использованием сеанса ormPython

Программы на Python
Anonymous
Sqlalchemy Вставка или обновление (Upsert) с использованием сеанса orm

Сообщение Anonymous »

Я пытаюсь выполнить upsert с помощью sqlalchemy
Я знаю, что в sql нет такого понятия, как upsert
но sqlalchemy предоставляет это
https://docs.sqlalchemy.org/en/ 20/dialects/mysql.html#insert-on-duulate-key-update-upsert
теперь то же самое я пытаюсь выполнить с помощью сеанса sqlalchemy orm
вот мой код:

Код: Выделить всё

from sqlalchemy.orm import sessionmaker
Session = sessionmaker(engine)
with Session() as session:
"""Here upsert functionality"""
session.insert_or_update(company)
session.commit()
Теперь слияние может быть вариантом, учитывая некоторые другие ответы.

Код: Выделить всё

session.merge(company)
Я еще не пробовал, так как тоже ищу несколько записей.
РЕДАКТИРОВАТЬ: session.merge(company) у меня отлично работает поскольку мне нужно проверять только первичный ключ, а не другие уникальные значения.
В документации говорится:

Session.merge() проверяет атрибуты первичного ключа исходного экземпляра и пытается согласовать его с экземпляром того же первичного ключа в сеансе. Если объект не найден локально, он пытается загрузить объект из базы данных на основе первичного ключа, а если его найти невозможно, создает новый экземпляр. Состояние каждого атрибута исходного экземпляра затем копируется в целевой экземпляр. Результирующий целевой экземпляр затем возвращается методом; исходный экземпляр источника остается неизмененным и не связанным с сеансом, если это еще не сделано.

Итак, теперь, если кто-нибудь знает, как выполнить одно и то же для нескольких объекты, которые были бы очень полезны
Спасибо :)

Подробнее здесь: https://stackoverflow.com/questions/744 ... rm-session

Вернуться в «Python»