반응형
이미 존재하는 경우 (제공된 매개 변수를 기반으로) 데이터베이스에서 객체를 가져 오거나 그렇지 않은 경우 생성하고 싶습니다.
현재 다음과 같이 명시 적으로 작성하고 있습니다.
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
반응형
'파이썬' 카테고리의 다른 글
파이썬 Pandas 막대 그림의 값으로 막대에 주석 달기 (0) | 2020.12.10 |
---|---|
파이썬 Python에서 문자열을 목록으로 변환 (0) | 2020.12.10 |
파이썬 목록을 피클하는 방법? (0) | 2020.12.10 |
파이썬 부동 소수점 값이 특정 범위 내에 있고 주어진 소수 자릿수를 가지고 있는지 확인하는 방법은 무엇입니까? (0) | 2020.12.10 |
파이썬 Flask 또는 WSGI에서 원시 HTTP 요청 인쇄 (0) | 2020.12.10 |
댓글