본문 바로가기
파이썬

파이썬 SQLAlchemy에는 Django의 get_or_create와 동등한 기능이 있습니까?

by º기록 2020. 12. 10.
반응형

이미 존재하는 경우 (제공된 매개 변수를 기반으로) 데이터베이스에서 객체를 가져 오거나 그렇지 않은 경우 생성하고 싶습니다.


현재 다음과 같이 명시 적으로 작성하고 있습니다.

def get_or_create_instrument(session, serial_number):
    instrument = session.query(Instrument).filter_by(serial_number=serial_number).first()
    if instrument:
        return instrument
    else:
        instrument = Instrument(serial_number)
        session.add(instrument)
        return instrument

 

해결 방법

 

이것이 기본적으로 수행하는 방법이며 AFAIK를 쉽게 사용할 수있는 지름길은 없습니다.

물론 일반화 할 수 있습니다.

def get_or_create(session, model, defaults=None, **kwargs):
    instance = session.query(model).filter_by(**kwargs).first()
    if instance:
        return instance, False
    else:
        params = dict((k, v) for k, v in kwargs.iteritems() if not isinstance(v, ClauseElement))
        params.update(defaults or {})
        instance = model(**params)
        session.add(instance)
        return instance, True

 

참조 페이지 https://stackoverflow.com/questions/2546207

 

 

반응형

댓글