0
私はこのようなSQLAlchemyの中に多対多の自己参照関係作成:私はに項目を追加するためにappend
を使用する場合多対多の関係には、項目を追加および削除しながら、
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
であります!
何が問題ですか?
はい、実際に私はこのような別のフィールドがあり、このタイプミスはそのためです。私はその質問を編集した。 DBにデータが存在する間は、これらのフィールドの両方が空白になります。 – RYN
はい、まったく!これが問題です – RYN