J'utilise Turbogears2 et SQLAlchemy pour développer une application web. J'ai deux tables mappées O1 et O2. O2 a une liste triée des O1 dans 'uns'. À un moment donné, je veux interroger tous les O2 et les O1 référencés.Problèmes de chargement d'un ensemble d'objets à l'aide de SQLAlchemy
Malheureusement, la requête ci-dessous échoue car la table O2 est aliasée dans la requête et la colonne référencée par la phrase order_by n'est plus connue.
Je voudrais savoir comment je peux résoudre ce problème tout en restant si possible dans la syntaxe déclarative.
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
Merci. Les deux solutions fonctionnent. Je vais utiliser le second. Un ajout car il est ambigu: Lorsque vous utilisez des chaînes, vous devez utiliser les noms des mappeurs. Le 'O1' dans le second exemple fait référence à la classe, pas au nom de table. – ebo