1

SQLAlchemy のリストのメンバーシップによってフィルター処理されたクエリを作成することは可能ですか? もしそうなら、それは一般的に私の代替案よりも効率的でしょうか?

これは、コードが現在どのように構成されているかです。クエリが 2 つの for ループ内にあるため、効率が悪い可能性があると思います。

def get_or_create(session, something):
    object = session.query(SomeModel).filter_by(attr=something).first()

    if object is None:
        object = make_new_object()

    return object

for things in stuff:
    objects = [get_or_create(session, something) for something in things]

クエリの総数を減らすために、次のようなことができるかどうか疑問に思っています。

for things in stuff:   
    filter = if attr in things else None # pseudocode

    objects_or_none = session.query(SomeModel).filter_by(filter).all()

    objects = [make_new_object() if object is None
               else object
               for object in objects_or_none]

objects_or_noneこのようになります[object, object, None, object, None, object]

4

0 に答える 0