2

ユーザーモデルに関係があります

photos = relationship('UserPhoto', backref='user', lazy='joined')

すべてのエントリを取得した後

users = query.all()

SA は LEFT OUTER JOIN を使用して userPhoto テーブルにクエリを実行します

私はそれらを反復し始め、すべてのプロパティを出力しますそして突然SAは各エントリに対して奇妙な暗黙のクエリを作成します

INFO:sqlalchemy.engine.base.Engine:BEGIN (implicit)
INFO:sqlalchemy.engine.base.Engine:SELECT users.id AS users_id, ... FROM users 
WHERE users.id = %(param_1)s
INFO:sqlalchemy.engine.base.Engine:{'param_1': <integer idetifier>}
INFO:sqlalchemy.engine.base.Engine:SELECT user_photo.id... FROM user_photo 
WHERE %(param_1)s = user_photo.user_id
INFO:sqlalchemy.engine.base.Engine:{'param_1': <integer idetifier>}

理由を見つけるのに数時間費やしましたが、まだ検索中です

以下のように自分で結合を作成すると:

query.options(joinedload_all('some field'))

SA は join で 1 つの選択のみを行います

4

0 に答える 0