【发布时间】:2018-05-23 04:21:15
【问题描述】:
我在 SQLAlchemy 中创建了一个多对多自引用关系,如下所示:
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))
当我使用 append 将项目添加到 blacklist 字段时,它可以工作并且新数据会提交到 DB
但是当我需要访问列表时,blacklist 字段为空!!
即
u = session.query(User).filter(User.id == userid).one_or_none()
print len(u.blacklist)
输出为0,而数据库中存在数据!
有什么问题?
【问题讨论】:
标签: python mysql sqlalchemy many-to-many self-join