使用SQLAlchemy加载一组对象时出现的问题

2024-05-18 07:54:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Turbogears2和SQLAlchemy开发一个Web应用程序。我有两个映射表O1和O2。 O2在“one”中有一个经过排序的o1列表。 在某些时候,我想查询所有的O2和引用的O1

不幸的是,下面的查询失败了,因为查询中的表O2是别名,并且order_by phrase引用的列不再是已知的。在

我想知道如何在保持声明式语法的同时解决这个问题。在

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

Tags: webidbasebysqlalchemyvalueonesorder
1条回答
网友
1楼 · 发布于 2024-05-18 07:54:05

使用lambda of clause元素来实现订单的后期绑定,如下所示:

ones = relation('O1', order_by=lambda:[O1.value])

或者作为另一种选择,用一个字符串来创建整个order_,如下所示:

^{pr2}$

相关问题 更多 >