查询父母&祖父母在SQLAlchemy的同一个表上使用自引用

时间:2016-01-13 13:59:02

标签: flask sqlalchemy flask-sqlalchemy

我有一张名为firm的表:

class Firm(Base):
    __tablename__ = "firm"
    id = Column(Integer, primary_key=True)
    name = Column(Unicode(255))
    parent_id = Column(Integer, ForeignKey('firm.id'))
    level = Column(Integer)
    parent = relationship("Firm", remote_side=[id])

id |名字| parent_id |水平

1 |名字1 | 0 | 1

2 |名字2 | 0 | 1

3 |名称3 | 1 | 2

4 |名字4 | 1 | 2

5 |名字5 | 3 | 3

6 |名字5 | 4 | 3

我想:

1)获得祖父母姓名,给定孙子身份的父母姓名。我用过这个,但是没用。获取结果时出现DettachedInstance错误。

ret = db_session.query(Firm).filter_by(id=6).options(joinedload('parent')).options(joinedload('parent')).first() # grandparent id = 1
print ret.parent.parent.name # grandparent name is printed out here => OK
db_session.expunge_all()
return render_template('firm.html', firm_tree=ret);

# here is code in html file
<p>{{ firm_tree.parent.name }}</p> <!-- ==>> OK -->
<p>{{ firm_tree.parent.parent.name }}</p> <!-- ==>> DetachedInstance error -->

2)获取与给定的祖父母id&amp;匹配的所有记录(等级= 3)。给定的父ID(此父级是祖父母的子级)

3)获取与给定的祖父母id&amp;匹配的所有记录(等级= 3)。无需关心父ID

我不知道2)和3)。 任何帮助表示赞赏!!!

0 个答案:

没有答案
相关问题