2012-10-05 52 views
0

與父母四處子元素我有以下的數據庫架構了在同一個表

class posts(Base): 
    __tablename__ = 'xposts' 
    id = Column(Integer, primary_key=True) 



class Comments(Base): 
    __tablename__ = 'comments' 
    id = Column(Integer, primary_key=True) 
    comment_parent_id=Column(Integer,unique=True) 
    #comment_id fetches comment of a comment ie the comment_parent_id 
    comment_id=Column(Integer,default=None) 
    comment_text=Column(String(200)) 

值在數據庫中

1 12 NULL Hello First comment 
2 NULL 12 First Sub comment 

我想獲取所有評論和的子評論使用sqlalchemy後,並有此目前爲止

qry=session.query(Comments).filter(Comments.comment_parent_id!=None) 
print qry.count() 

有沒有辦法我可以獲取全部e在一個查詢中的評論的子註釋我已經嘗試在同一張表(註釋)上加入外聯,它看起來很愚蠢,並且失敗了。

+1

這裏的SQLAlchemy的自我參照外鍵的文檔中的一個很好的例子:http://docs.sqlalchemy.org/en/rel_0_7/orm/relationships.html#adjacency-list-relationships – andrean

+0

我可以得到一個外連接例子因爲加入不起作用,因爲評論可能缺少子註釋? – Madawar

回答

1

您在sqlalchemy查詢中使用了all()函數之後,您可以使用count和len來查找數據庫中的總行數。 ,因爲此查詢提供了2'd列表結果。

qry=session.query(Comments).filter(Comments.comment_parent_id!=None).all() 

len(qry) 
+0

len(qry)部分截至目前是微不足道的,我只是測試是否有結果被返回。 – Madawar