SQLAlchemy – эквивалент INSERT или REPLACE

кто-нибудь знает, что эквивалентно предложению SQL «ВСТАВИТЬ ИЛИ ЗАМЕНИТЬ» в SQLAlchemy и его языке выражения SQL?

Большое спасибо – honzas

  • Передача цикла asyncio по аргументу или использование цикла asyncio по умолчанию
  • Аргумент «Тензорный поток»
  • Какую библиотеку gps вы бы порекомендовали для python?
  • Питонический способ комбинирования цикла FOR и IF
  • удалить дубликаты из вложенных словарей в списке
  • Есть ли способ создать отдельный дисплей и вход на том же терминале с использованием проклятия?
  • Установить tkinter для Python
  • matplotlib: как комментировать точку на разброс автоматически помещенной стрелки?
  • Как сделать словарь с несколькими ключами одним значением?
  • Python tkinter создает кнопки для аргументов командной строки для прохождения цикла
  • Отображение фотографий в ярлыках с помощью инструкции for с помощью tkinter, можно ли это сделать?
  • Печать формы в Python
  • 4 Solutions collect form web for “SQLAlchemy – эквивалент INSERT или REPLACE”

    Я не думаю (исправьте меня, если я ошибаюсь) INSERT OR REPLACE находится в любом из стандартов SQL; это специфичная для SQLite вещь. Существует MERGE, но это не поддерживается всеми диалектами. Поэтому он недоступен в общем диалекте SQLAlchemy.

    Самое чистое решение – использовать сеанс, как предложил М. Утку. Вы также можете использовать SAVEPOINT для сохранения, попробуйте: вставить, кроме IntegrityError: затем откат и выполнить обновление. Третье решение – написать свой INSERT с предложением OUTER JOIN и WHERE, которое фильтрует строки с нулями.

    Как насчет Session.merge ?

     Session.merge(instance, load=True, **kw) 

    Скопируйте состояние экземпляра в постоянный экземпляр с тем же идентификатором.

    Если в сеансе нет постоянного экземпляра, он будет загружен. Верните постоянный экземпляр. Если данный экземпляр некорректен, сохраните копию и верните ее как новый постоянный экземпляр. Данный экземпляр не ассоциируется с сеансом. Эта операция каскадирует к связанным экземплярам, ​​если ассоциация сопоставляется с cascade = "merge".

    с http://www.sqlalchemy.org/docs/reference/orm/sessions.html

     Session.save_or_update(model) 

    Вы можете использовать OR REPLACE в качестве так называемого prefix в вашей SQLAlchemy Insert содержится документация о том, как разместить OR REPLACE между INSERT и INTO в инструкции SQL.

    Python - лучший язык программирования в мире.