我有一个联结表,其中包含对其他两个表的引用。我想要的是从联结表中删除此引用。在交叉点,我们可以从一个平面的geven类型中获得多个项目。问题是,当我删除给定项目时,移动相同类型的所有项目。
如何从联结表中仅删除一项?
这是我的数据库结构。
class Item(object):
pass
class Plane(object):
pass
class PlaneItem(object):
pass
planeMeta = Table("planes",
Column("plane_id", Integer, primary_key = True)
)
itemMeta = Table("items",
Column("item_id", Integer, primary_key = True)
)
planeItem = Table("planes_items",
Column("planes_items_id", Integer, primary_key = True)
Column("plane_id", Integer, ForeinKey("planes.plane_id"))
Column("item_id", Integer, ForeinKey("items.item_id"))
)
mapper(Plane, planeMeta, properties={
"items": relationship(Item, planeItem, lazy="dynamic")
})
添加新项目。
plane = dbSess.query(Plane).filter(Plane.plane_id == my_plane_id).one()
newItem = dbSess.query(Item).filter(Item.item_id == my_new_item).one()
plane.items.append(newItem)
删除项目。
itemForRemoving = myPlane.items.filter(item_id==4)
myPlane.items.remove(itemForRemoving)
答案 0 :(得分:1)
我最近澄清了最近出现这个问题的文档。
删除该项是SQLAlchemy所需的全部内容,以便知道从“辅助”表中删除行。它每次删除只删除一行,因此“移动相同类型的所有项目”必须是您未在此处说明的其他用法。