UnitTest:无法添加多对多关系:完整性错误(似乎删除不做他的工作)

2024-04-20 04:58:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个表:Person&Team;每个表都有多对多的关系。在

我在setUp函数中这样做(在每个测试函数之前调用,在我的例子中是3次)

p = Person(fname=u"John", lname=u"Doe")
Team(name=u"Anon", persons=[p])
session.commit()

以及我的tearDown函数(在每个测试函数之后称为

^{pr2}$

第一个测试通过了,但是当第二次调用setUp时,我得到了: IntegrityError: (IntegrityError) columns person_id, team_id are not unique u'INSERT INTO team_persons__person_teams (person_id, team_id) VALUES (?, ?)' (5, 1)

看起来第一次delete并没有真正删除行。我不明白为什么会这样。在


Tags: 函数id关系setupjohnfname测试函数team
1条回答
网友
1楼 · 发布于 2024-04-20 04:58:52

正在删除PersonTeam表中的行,但关联表中的行没有被删除。这是因为query.delete()不处理关系级联。有关详细说明,请参见Python's SQLAlchemy doesn't clean out the secondary (many-to-many) table?。在

您应该能够通过对添加的每个对象使用session.delete(obj)来解决这个问题。{{5}在测试时,最好是使用cd6}创建一个

相关问题 更多 >