2016-02-08 90 views
2

我有一个金字塔应用程序中使用的SQLAlchemy以下模型:订购SQLAlchemy的关系,而不是通过主键

class Issue(base_iop): 
    __tablename__ = 'issues' 
    issueid = Column(BIGINT, primary_key=True, name="ISSUEID") 
    issuenum = Column(VARCHAR(20), name="ISSUENUM") 
    status = Column(VARCHAR(32), name="STATUS") 
    datetime = Column(TIMESTAMP, name="ISSUETIME") 

class Related(base_iop): 
    __tablename__ = 'related' 
    relationid = Column(BIGINT, primary_key=True, name="ROWSTAMP") 
    parent_num = Column(VARCHAR(20), ForeignKey('issue.ISSUENUM'),name="RECORDKEY") 
    children_num = Column(VARCHAR(20), ForeignKey('issue.ISSUENUM'), name="RELATEDKEY") 
    issues = relationship(iop, foreign_keys=[child_num]) 

我能得到就好使用问题的相关问题:的issues属性相关表格:

for related in db.query(Issue).all()[0].issues: 
    print related.status 

但是,我没有找到解决方案来订购datetime属性的问题。如果Related已经datetime属性就是这样,它应该使用ORDER_BY的关系是非常简单的:

class Issue(base_iop): 
    __tablename__ = 'issues' 
    issueid = Column(BIGINT, primary_key=True, name="ISSUEID") 
    issuenum = Column(VARCHAR(20), name="ISSUENUM") 
    status = Column(VARCHAR(32), name="STATUS") 
    datetime = Column(TIMESTAMP, name="ISSUETIME") 
    children = relationship("Related", foreign_keys="[Related.parent_num]", backref="parent", order_by="[Related.datetime]") 

class Related(base_iop): 
    __tablename__ = 'related' 
    relationid = Column(BIGINT, primary_key=True, name="ROWSTAMP") 
    parent_num = Column(VARCHAR(20), ForeignKey('issue.ISSUENUM'),name="RECORDKEY") 
    children_num = Column(VARCHAR(20), ForeignKey('issue.ISSUENUM'), name="RELATEDKEY") 
    datetime = Column(TIMESTAMP, name="ISSUETIME") 
    issues = relationship(iop, foreign_keys=[child_num]) 

如何通过另一场责令相关问题,而不是主键就像是现在?

+0

当您db.query相关这么做确认....你想在日期时间的顺序要打印的realted问题?你能改变桌子的设计吗?比如这是一个新项目还是现有的大量数据? – crooksey

回答