image
및 restaurant
의 두 테이블이 있습니다. 저는 그들 사이에 다 대다 관계를 설정했습니다. 여기 다 - 대 - 다 관계가있는 행 삭제
images_assoc = Table('restaurant_image_assoc', Base.metadata,
Column('restaurant', Integer(unsigned=True),
ForeignKey('restaurant.id')),
Column('image', Integer(unsigned=True),
ForeignKey('image.id')))
class Image(Base):
__tablename__ = 'image'
id = Column(Integer(unsigned=True), primary_key=True)
reports = Column(TinyInt, nullable=False, default=0)
created_at = Column(DateTime, default=datetime.now)
class Restaurant(Base):
__tablename__ = 'restaurant'
id = Column(Integer(unsigned=True), primary_key=True)
images = relationship(Image, secondary=images_assoc)
내가 image
에서 행을 삭제해야하지만, 물론 내가 먼저 가리 restaurant_image_assoc
의 모든 행을 삭제해야합니다. 어떻게해야합니까?
AttributeError: 'Table' object has no attribute 'class_'
image와 image_assoc 사이의 관계에 delete-orphan cascade를 설정해 보았습니까? [여기를 보시오] (http://docs.sqlalchemy.org/en/rel_0_7/orm/session.html#unitofwork-cascades) – urschrei
아무 관계도 없으며, 하나를 만들려고 할 때 나에게 소리 지르기 시작합니다. 나는 현재 원시 SQL을 사용하여 함께 작업하는 것을 해킹했습니다. >. < –
여기서 특정 오류 메시지는 Query()가 현재 테이블 (query (images_assoc) ... delete())과 작동하지 않는다는 것입니다. 그래도 다른 답변과 마찬가지로 Restaurant.images를 조작하면 images_assoc의 행이 자동으로 처리됩니다. "보조"이므로 캐스케이드 설정에 관계 없습니다. 즉, restaurant.images.remove (some_image)라고 말한 다음 flush하면 images_assoc에서 행을 삭제하기 만하면됩니다. – zzzeek