SQLAlchemy에서 ON DUPLICATE KEY UPDATE
질문: "INSERT .. . SQLAlchemy를 사용한 ON DUPLICATE KEY UPDATE" 작업 ORM?
답변:
SQLAlchemy에는 버전 1.2 이후 MySQL에 대한 "ON DUPLICATE KEY UPDATE"에 대한 지원이 내장되어 있습니다. 이 기능을 사용하려면 여기에 제공된 솔루션을 참조하세요: https://stackoverflow.com/a/48373874/319066
SQL 문 접근 방식:
일반적인 상황 또는 MySQL이 아닌 데이터베이스의 경우 @compiles 데코레이터를 사용하여 생성된 SQL 문에 "ON DUPLICATE KEY UPDATE"를 포함할 수 있습니다. 여기에 예가 제공됩니다: https://github.com/somada141/sqlalchemy-insert-duplicate-update
ORM 접근 방식:
SQLAlchemy의 ORM은 직접 지원하지 않습니다. "중복 키 업데이트 중입니다." 그러나 기본 키 업데이트의 경우 기존 레코드를 확인하고 그에 따라 업데이트하는 session.merge() 함수를 사용할 수 있습니다.
비기본 키에 대한 사용자 정의 구현:
기본 키가 아닌 업데이트와 관련된 상황의 경우 먼저 기존 레코드를 확인하고 업데이트를 수행하는 Django의 get_or_create()와 유사한 함수를 만들 수 있습니다. 그에 따라 업데이트하거나 삽입하세요. 이러한 기능의 예는 다음과 같습니다.
def get_or_create(session, model, defaults=None, **kwargs): instance = session.query(model).filter_by(**kwargs).first() if instance: return instance else: params = {k: v for k, v in kwargs.items() if not isinstance(v, ClauseElement)} if defaults: params.update(defaults) instance = model(**params) return instance
위 내용은 SQLAlchemy에서 중복 키 업데이트 시 INSERT...를 효율적으로 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!