Я знаю, что в 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