Flask 查询家长&;在SQLAlchemy中在同一张桌子上自我参照的祖父母
我有一张名为“坚定”的桌子:Flask 查询家长&;在SQLAlchemy中在同一张桌子上自我参照的祖父母,flask,sqlalchemy,flask-sqlalchemy,Flask,Sqlalchemy,Flask Sqlalchemy,我有一张名为“坚定”的桌子: 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"
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 |名称|父级| 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) 获取祖父母姓名,给定孙辈id的父母姓名。我使用了这个,但它不起作用。我在获取结果时遇到了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 -->
ret=db\u session.query(Firm).筛选依据(id=6).选项(joinedload('parent')).选项(joinedload('parent')).first()#祖父母id=1
print ret.parent.parent.name#祖父母的名字在这里打印出来=>OK
db_session.expunge_all()
返回渲染模板('firm.html',firm\u tree=ret);
#下面是html文件中的代码
{{firm_tree.parent.name}}
{{firm_tree.parent.parent.name}
2) 获取与给定祖父母id和给定父母id(此父母是祖父母的子女)匹配的所有记录(级别=3)
3) 获取与给定祖父母id匹配的所有记录(级别=3)&无需关心父id
我对2)和3)一无所知。
感谢您的帮助