다음 함수는 데이터베이스의 부모를 올바르게 계산하지만 Group.query (user_id == 1) .rank (0, Group.query. user_id == 1)) 매우 효율적으로 보이지는 않습니다. 이 함수를 작성하는 더 좋은 방법이 있습니까?데이터베이스에서 부모를 효율적으로 계산하려고 시도하는 sqlalchemy
class Group(db.Model):
#data
id=db.Column(db.Integer, primary_key=True)
name=db.Column(db.String(32), nullable=False)
#relationships
parent_id=db.Column(db.Integer, db.ForeignKey('group.id'))
children=db.relationship('Group', backref=db.backref('parent', remote_side=[id]))
def rank(self, count, parent):
if parent.parent:
count=count+1
parent.rank(count, parent.parent)
else:
return count
다른 말로하면 중첩 수준을 계산하려고합니까? 어떤 DB를 사용하고 있습니까? 또한,'self'를 사용하는 대신'parent' 인수와 같은 인스턴스를'rank()'에 전달하는 이유는 무엇입니까? –
데이터베이스에 sqlite를 사용하고 있습니다. 나는 자기를 사용하여 시도했지만 그것은 단지 0을 계속 유지했다. 나의 생각은 당신이 5 학년이라면 당신의 순위는 5이다. 데이터베이스가 자기 참조 적이기 때문에 나는 새로운 명백한 것이 뿌리로 연결될 때 이것을 바꿀 수 있어야한다. –