我有两个对象,一个 Player 对象和一个 Team 对象。
我想找到数据库中所有没有球员的 Team 对象并将其删除。
class Team(db.Model):
__tablename__ = 'Team'
id = db.Column(db.Integer, primary_key=True)
players = db.relationship('Player', backref='team', lazy='dynamic')
这是我迄今为止尝试过的(不成功):
all_teams = Team.query.all()
for a_team in all_teams:
if not a_team.players: # have also tried this with a .query.all() and a .all()
db.session.delete(a_team)
db.session.commit()
我做错了什么?我该如何解决这个问题?
最佳答案
这可能会起作用:
all_teams = Team.query.all()
for a_team in all_teams:
if a_team.players.count() == 0
db.session.delete(a_team)
db.session.commit()
但请注意,这种方式的效率非常低。如果您有 100 个团队,则上述代码将必须向数据库发出 101 次查询,以确定需要删除哪些团队。如果您需要经常进行这些搜索,那么重新考虑数据库的结构可能是个好主意,以便更轻松地找到空团队。
关于python - 查找并删除所有空关系列表对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18473108/