2017-12-08 13 views
0

항목 : 나는에 항목을 추가 append를 사용하는 경우대다 SQLAlchemy의 나던 부하의 관계는 추가하고 삭제하는 동안이 같은 SQLAlchemy의에서 many-to-many 자기 참조 관계를 만들어

blacklist_association_table = Table('userblacklist', Base.metadata, 
    Column('user_id', Integer, ForeignKey('user.id'), primary_key=True), 
    Column('blacklisted_id', Integer, ForeignKey('user.id'), primary_key=True) 
) 


class User(Base): 
    __tablename__ = 'user' 

    id = Column(Integer, primary_key=True) 
    name = Column(String(250), nullable=True) 

    blacklist = relationship("User", 
          secondary=blacklist_association_table, 
          primaryjoin=(id == blacklist_association_table.c.user_id), 
          secondaryjoin=(blacklist_association_table.c.blacklisted_id == id)) 

blacklist 필드 작동하고 새 데이터가 DB에 커밋됩니다

그러나 목록에 액세스해야 할 때 blacklist 필드가 비어 있습니다 !! 데이터 DB에있는 동안, 즉

u = session.query(User).filter(User.id == userid).one_or_none() 
print len(u.blacklist) 

출력 0있다!

무엇이 문제입니까?

답변

0

당신은

print len(u.blacklist) 

그렇지 않으면 나는 당신이 더 많은 컨텍스트를 필요가 있다고 생각 넣어 의미했다.

편집

당신은 시도 할 수 있습니다 : 제가 코드를 말할 수있는 것은 위의 올바른

u = session.query(User).filter(User.id == userid).one_or_none() 
print len(u.blacklist) 
u.blacklist.append(session.query(User).first()) 
session.commit() 
print len(u.blacklist) 
u = session.query(User).filter(User.id == userid).one_or_none() 
print len(u.blacklist) 

에서. 당신은 당신이 위에서 다음과 같은 출력을 얻을 수 있음을 말하고있다 :

0 
1 
0 

?

+0

예, 실제로 저는 이와 같은 다른 필드가 있습니다.이 오타는 그 때문이었습니다. 나는 그 질문을 편집했다. 데이터베이스에 데이터가있는 동안이 두 필드는 비어 있습니다. – RYN

+0

예, 정확히! 이게 문제 야 – RYN