我有两个表:Person&Team;每个表都有多对多的关系。在
我在setUp
函数中这样做(在每个测试函数之前调用,在我的例子中是3次)
p = Person(fname=u"John", lname=u"Doe")
Team(name=u"Anon", persons=[p])
session.commit()
以及我的tearDown
函数(在每个测试函数之后称为)
第一个测试通过了,但是当第二次调用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并没有真正删除行。我不明白为什么会这样。在
正在删除
Person
和Team
表中的行,但关联表中的行没有被删除。这是因为query.delete()
不处理关系级联。有关详细说明,请参见Python's SQLAlchemy doesn't clean out the secondary (many-to-many) table?。在您应该能够通过对添加的每个对象使用
session.delete(obj)
来解决这个问题。{{5}在测试时,最好是使用cd6}创建一个相关问题 更多 >
编程相关推荐