2
私はTurbogears2とSQLAlchemyを使ってWebアプリケーションを開発しています。私は2つのマップされたテーブルO1とO2を持っています。 O2は、 'ones'にO1のソートされたリストを持っています。 ある時点で、すべてのO2と参照されているO1を照会する必要があります。SQLAlchemyを使用してオブジェクトのセットをeagerloadingする問題
残念ながら、テーブルO2がクエリでエイリアスになっていて、order_byフレーズで参照されているカラムが既知でないため、以下のクエリは失敗します。
可能であれば、この問題を解決できる方法を知りたいのですが、宣言構文にとどまっています。
base = declarative_base()
class O1(base):
__tablename__ = 'O1'
value = Column(Integer)
o2_id = Column(Integer, ForeignKey('O1.id')) # The culprit
class O2(base):
__tablename__ = 'O2'
id = Column(Integer, primary_key=True)
ones = relation('O1', order_by = ['O1.value'])
Session.query(O2).options(eagerload('ones')).all() # Throws an error
ありがとうございました。どちらのソリューションも機能します。私は2番目のものを使用します。 1つの追加はあいまいであるため:文字列を使用するときは、マッパー名を使用する必要があります。 2番目の例の 'O1'は実際にはtablenameではなくクラスを参照しています。 – ebo