gpt4 book ai didi

python - 删除flask中的一对一关系

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:10 25 4
gpt4 key购买 nike

我目前正在使用 Flask 开发一个应用程序,并且在删除一对一关系中的项目时遇到了一个大问题。我的模型中有以下结构:

class User(db.Model):
__tablename__ = 'user'
user_id = db.Column(db.String(8), primary_key = True)
password = db.Column(db.String(26))

class Student(db.Model):
__tablename__ = 'student'
user_id = Column(db.String(8), ForeignKey('user.user_id'), primary_key = True)
user = db.relationship('User')

class Professor(db.Model):
__tablename__ = 'professor'
user_id = Column(db.String(8), ForeignKey('user.user_id'), primary_key = True)
user = db.relationship('User')

如果我删除用户,我想要做的是删除学生或教授。我尝试使用下面的代码对其进行测试,但是,当我检查数据库时,学生和教授仍然在那里,而我的测试没有通过。我尝试在设置关系时包含级联参数,但它不起作用。我在网上找到了使用这个参数:single_parent=True,但它也不起作用。

user1 = User(user_id='user1234',password='alsdjwe1')
user2 = User(user_id='user2345',password='asfr5421')
student1 = Student(user = user1)
professor1 = Professor(user = user2)
db.session.delete(user1)
db.session.delete(user2)

如果有人能帮助我解决这个问题,我会很高兴。

非常感谢,

蒂亚戈。

最佳答案

在关系中使用cascade参数。

class Student(db.Model):
__tablename__ = 'student'
user_id = Column(db.String(8), ForeignKey('user.user_id'), primary_key = True)
user = db.relationship('User', cascade='delete')

class Professor(db.Model):
__tablename__ = 'professor'
user_id = Column(db.String(8), ForeignKey('user.user_id'), primary_key = True)
user = db.relationship('User', cascade='delete')

您可能想查看delete-orphan如果您的用例需要它。

关于python - 删除flask中的一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24970594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com