gpt4 book ai didi

python - sqlalchemy 中的多对多关系在添加和删除项目时不会加载

转载 作者:行者123 更新时间:2023-11-29 18:07:19 24 4
gpt4 key购买 nike

我在 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字段时,它会起作用并且新数据会提交到数据库

但是当我需要访问列表时,blacklist 字段为空!即

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

输出为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

关于python - sqlalchemy 中的多对多关系在添加和删除项目时不会加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47722523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com