他の2つのテーブルへの参照を保持するジャンクションテーブルがあります。私が欲しいのは、ジャンクションテーブルからこの参照を削除することです。ジャンクションでは、1つの平面に対してgevenタイプから複数のアイテムを持つことができます。問題は、特定のアイテムを削除すると、同じタイプのすべてのアイテムが移動されることです。
ジャンクションテーブルから1つのアイテムのみを削除するにはどうすればよいですか?
これが私のデータベース構造です。
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)