Python 烧瓶-SQLAlchemy-清除表格以及多对多链接表格
我有两种关系:服务和停止。它们相互之间形成了一种多对多的关系。 我想清除这两个表中的所有数据,同时清空它们的多对多链接表 我尝试了以下方法Python 烧瓶-SQLAlchemy-清除表格以及多对多链接表格,python,database,flask,sqlalchemy,cascade,Python,Database,Flask,Sqlalchemy,Cascade,我有两种关系:服务和停止。它们相互之间形成了一种多对多的关系。 我想清除这两个表中的所有数据,同时清空它们的多对多链接表 我尝试了以下方法 Service.query.delete() Stop.query.delete() 这清除了两个表,但是链接表中的所有数据保持不变 服务模式: class Service(Base): __tablename__ = 'service' id = Column(Integer, primary_key=True) name = C
Service.query.delete()
Stop.query.delete()
这清除了两个表,但是链接表中的所有数据保持不变
服务模式:
class Service(Base):
__tablename__ = 'service'
id = Column(Integer, primary_key=True)
name = Column(String(250), nullable=False)
service_type = Column(String(250), nullable=False)
description = Column(String(250), nullable=False)
停止模式:
class Stop(Base):
__tablename__ = 'stop'
id = Column(Integer, primary_key=True)
name = Column(String(250), nullable=False)
latitude = Column(Float(), nullable=False)
longitude = Column(Float(), nullable=False)
services = relationship("Service",
secondary=stop_service,
backref="stop")
有人能告诉我如何自动清除链接表,而不必循环“停止”表吗?刚刚设置在您的加入表(stop\u service
)的定义中:
stop_service = Table("stop_service", meta,
Column("service_id", ForeignKey('Service.id', ondelete="CASCADE")),
Column("stop_id", ForeignKey('Stop.id', ondelete="CASCADE")))
感谢您的想法,我现在明白了删除必须由数据库触发,因为query.delete()是一个批量操作。然而,即使在添加了“ondelete”之后,链接表也没有被清空。我正在使用SQLite数据库。以下是我的数据库架构: