2012-07-12 3 views
0

다른 두 테이블에 대한 참조를 보유하는 접합 테이블이 있습니다. 내가 원하는 건 접합부 테이블에서이 참조를 제거하는 것입니다. 접합점에서 우리는 하나의 비행기에 대한 geven 타입으로부터 하나 이상의 아이템을 가질 수 있습니다. 문제는 주어진 항목을 제거 할 때 같은 유형의 모든 항목이 이동된다는 것입니다.sqlalchemy : 접합 테이블에서 항목 제거

어떻게 접합점 테이블에서 하나의 항목 만 제거 할 수 있습니까?

내 데이터베이스 구조는 다음과 같습니다. 새로운 항목을 추가

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) 

답변

1

최근에 다가오고있는이 질문에 대한 설명서가 최근에 명확 해졌습니다.

항목을 제거하면 "보조"테이블에서 행을 제거하는 방법을 알기 위해 SQLAlchemy의 요구 사항입니다. 제거 당 하나의 행만 제거하므로 "같은 유형의 모든 항목이 이동되었습니다"는 여기에 설명되지 않은 다른 용도로 사용해야합니다.

http://docs.sqlalchemy.org/en/rel_0_7/orm/relationships.html#deleting-rows-from-the-many-to-many-table을 참조하십시오.

+0

네, 맞습니다. 내 매퍼에서 물건을 엉망으로 만들었 어. – bozhidarc