IMO 잘되지 않습니다 :
author_id = line[3]
alternate_id = author_mapper[author_id]
query = Author.filter(internal_id = author_id)
alternate_query = Author.filter(internal_id = alternate_id)
query = query or alternate_query
author = query[0]
일부 노트 : 당신이해야한다 이러한 내부 ID가 고유하다는 것을 보증 할 수 있습니다 (get 메소드를 사용하기 때문에 가정하는 것이 안전합니다). 첫 번째 쿼리에 결과가있는 동안에는 대체 쿼리가 실행되지 않습니다. 추가 개선은 메소드가 질의와 대체 질의를 반환하게하는 것일 수 있습니다. 경우 사람에
author_id = line[5]
query = RegularQuery(author_id) or AlternateQuery(author_id, author_mapper)
author = query[0]
무엇에 안개가 : 당신은 심지어
예 (... 당신이 정말로 빛과 청소를 찾고 있다면이 상당히 저렴하지만) 쿼리 인스턴스를 만들 수 없습니다 두 개의 쿼리가 "or"연산자 (해당 문제에 대한 부울 연산자)에 의해 연산 될 때 단락 회로 방식으로 실행되고 평가됩니다. 쿼리는 결과가 있으면 true로, 그렇지 않은 경우에는 false로 평가됩니다. 따라서 일반 쿼리에 결과가 있으면 대체 쿼리가 실행되지 않습니다.
좋은 조언, 감사합니다. :) – AP257