良いものではありません、これは良く読み:
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]
を:あなたは、その後も、
例(これらはかなり安いですが、あなたは本当に軽くてクリーンを探しているなら...)クエリインスタンスを作ることができませんでした2つのクエリが「or」演算子(その点に関してブール演算子)によって操作されたとき、それらは実行され、短絡方法で評価される。クエリには結果がある場合はtrueに、そうでない場合はfalseに評価されます。したがって、通常のクエリに結果がある場合、代替クエリは実行されません。
良いアドバイス、ありがとうございました。 – AP257