【发布时间】:2021-12-04 15:17:03
【问题描述】:
我有以下两张表:
class User(Base):
__tablename__ = "user_entity"
id = Column(String(32), primary_key=True, index=True)
email = Column(String(32))
email_constraint = Column(String(32))
email_verified = Column(Boolean)
enabled = Column(Boolean)
federation_link = Column(String(32))
first_name = Column(String(32))
last_name = Column(String(32))
realm_id = Column(String(32))
username = Column(String(32))
created_timestamp = Column(String(32))
service_account_client_link = Column(String(32))
not_before = Column(Integer)
children = relationship("Userattribute", back_populates="parent")
class Userattribute(Base):
__tablename__ = "user_attribute"
name = Column(String(32))
value = Column(String(32))
id = Column(String(32), primary_key=True, index=True)
user_id = Column(String(32), ForeignKey('user_entity.id', ondelete="CASCADE"))
parent = relationship("User", back_populates="children")
我想通过他的 ID 从user_entity 表中删除一个用户:
[SQL: DELETE FROM user_entity WHERE user_entity.id = %s]
删除实现:
def delete_user(db: Session, id: str):
return db.query(models.User).filter_by(id=id)
@app.delete("/entity/{id}", response_model=schemas.Userentity)
def del_user(id: str, db: Session = Depends(get_db)):
user = crud.delete_user(db, id=id)
user_obj = user.first()
if user_obj is not None:
user.delete()
db.commit()
return JSONResponse(content={"message": "user erfolgreich gelöscht"})
else:
raise HTTPException(status_code=400, detail=f"ID existiert nicht")
不幸的是,我收到以下错误:
'Cannot delete or update a parent row: a foreign key constraint fails
为什么会失败?预期的行为是,当我删除用户时,user_attribute 表中的所有 user_attributes 也会被删除。如何解决?
【问题讨论】:
标签: sql sqlalchemy