リレーション列の 1 つを使用して順序付けまたは検索するときに 2 つの結合を回避するために、contains_eager オプションを使用して 1 つのセルフリレーション プロパティを積極的にロードしようとしています。私のモデルオブジェクトは次のようになります:
class Usuario(DeclarativeBase):
__tablename__ = 'usuarios'
__table_args__ = {'mysql_engine':'InnoDB'}
id=Column(Integer, primary_key=True)
usuario=Column(Text)
...
resellers_id=Column(Integer, ForeignKey('usuarios.id'))
....
reseller = relation('Usuario', remote_side = [id])
私はデータを取得するために使用しています:
u= DBSession.query(Usuario).options(contains_eager('reseller'))\
.outerjoin(self.usuarios_padre, Usuario.resellers_id == self.usuarios_padre.id)\
.filter(Usuario.id=1)\
.order_by(self.usuarios_padre.usuario).one()
ここで、self.usuarios_padreは Usuario のエイリアスの 1 つです
u.reseller.usuarioにアクセスすると、親からusuarioを取得する代わりにu.usuarioと同じものを取得します
どこに問題があるのか わかりますか?結果なしで lazy="joined" を使用して関係を定義しようとしました。
よろしく