【发布时间】:2021-06-09 06:09:36
【问题描述】:
我有几个表具有以下多对多关系
def TableOne(db.Model):
__tablename__ = "table_one"
id = db.Column(db.Integer, primary_key=True)
table_twos = db.relationship(
"TableTwo", secondary=relationship_table, lazy="subquery"
)
# Some other attributes
def TableTwo(db.Model):
__tablename__ = "table_two"
id = db.Column(db.Integer, primary_key=True)
relationship_table = db.Table(
"relationship_table",
db.Column("table_one_id", db.Integer, db.ForeignKey("table_one.id"), primary_key=True),
db.Column(
"table_two_id",
db.Integer,
db.ForeignKey("table_two.id"),
primary_key=True,
),
)
一般我都是做小项目的,可以删除所有的关系如下
tables = db.session.query(TableOne).all()
for t in tables:
t.table_twos = []
db.session.flush()
db.session.commit()
table_twos = db.session.query(TableTwo).all()
for t in table_twos:
db.session.delete(t)
db.session.flush()
db.session.commit()
但是,由于我正在处理数百万行,我无法将它们全部加载到内存中。如果我尝试只删除所有 TableTwo 行,它会给我一个关于外键的错误。
如何一次删除所有关系,然后一次性删除 TableTwo 行?
谢谢
【问题讨论】:
标签: python-3.x postgresql sqlalchemy