가장 멋진 파이썬 방식으로 달성하고 싶은 내용은 다음과 같습니다. 특정 필터에서 데이터베이스의 객체를 찾으십시오. 결과가없는 경우에만 다른 필터를 사용하여 개체를 찾으십시오. 결과가 반환되지 않으면 객체가 존재하지 않으므로 새 인스턴스를 삽입하십시오.제어 흐름을 위해 Python 중첩 시도/예외/다른 방법
내가 생각하고 무엇 :이 블록이 정확하거나 가장 좋은 방법은 내가 달성하기 위해 노력하고있어 처리 할 경우
try:
obj = session.query(model).filter_by(field_a).one()
except NoObjFound:
try:
obj = session.query(model).filter_by(field_b).one()
except NoObjFound:
insert_into_db(brand_new_obj)
else:
update_the_obj(obj)
잘 모르겠어요.
현재 가지고있는 것의 단점은 'else'가 첫 번째 'try'에만 적용된다는 것입니다. 내부의'try'는 결코 그 라인에 도달하지 않을 것입니다. – jonrsharpe
else 절을 다시 들여서 두 필터에 결과가없는 경우에만 업데이트하도록해야합니다. 하지만 자주 사용하기 때문에 이것이 파이썬이라고 생각합니다. – Llopis
'else/else'절을 내부 try/except 블록에 들여 쓰기하면 외부 'try/except' 블록에서 숨길 것입니다. 이것은 저자가 원하는 것이 아닙니다. – huu