Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法删除一对多关系中的父记录-Flask SqlAlchemy_Python_Mysql_Flask_One To Many_Flask Sqlalchemy - Fatal编程技术网

Python 无法删除一对多关系中的父记录-Flask SqlAlchemy

Python 无法删除一对多关系中的父记录-Flask SqlAlchemy,python,mysql,flask,one-to-many,flask-sqlalchemy,Python,Mysql,Flask,One To Many,Flask Sqlalchemy,我已经用一对多关系的炼金术创建了3个简单模型。以下是模型的代码: class UsersModel(BaseModel, UserMixin): __tablename__ = 'user' email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) confirmed_at = db.Column(db.DateTime()) info = db.

我已经用一对多关系的炼金术创建了3个简单模型。以下是模型的代码:

class UsersModel(BaseModel, UserMixin):
    __tablename__ = 'user'
    email = db.Column(db.String(255), unique=True)
    password = db.Column(db.String(255))
    confirmed_at = db.Column(db.DateTime())
    info = db.relationship('UserInfoModel', backref="user", cascade="all, delete" , lazy='dynamic')
    notes = db.relationship('NotesModel', backref="owner", cascade="all, delete" , lazy='dynamic')

class UserInfoModel(db.Model):
    __tablename__ = 'user_info'
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    first_name = db.Column(db.String(55))
    last_name = db.Column(db.String(55))
    age = db.Column(db.Integer)
    profession = db.Column(db.String(255))

class NotesModel(BaseModel):
    __tablename__ = 'notes'
    title = db.Column(db.String(255), nullable=False)
    desc = db.Column(db.Text)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
我可以毫无问题地插入和检索关系数据,但当我试图删除用户时,它还应该删除注释和信息,而不是给出错误,不允许我删除。下面是我看到的错误:
但是,如果我删除注释和信息,然后尝试删除用户,它就会工作。它在做相反的事情。我尝试使用“删除孤儿”,但没有成功。我已经阅读了文档并阅读了一些关于它的博客,但没有任何帮助。我说的关系不对吗?如果是,请帮助我实现这一点,或者帮助我查找代码中的错误。
感谢你的帮助,谢谢


更新:添加删除孤立项后,我可以从会话中删除数据,但不能从phpmyadmin中删除数据。

我认为您希望将关系定义为与您拥有关系的方式相反,如下所示:

       class UsersModel(BaseModel, UserMixin):
           __tablename__ = 'user'
          email = db.Column(db.String(255), unique=True)
          password = db.Column(db.String(255))
          confirmed_at = db.Column(db.DateTime())

       class UserInfoModel(db.Model):
           __tablename__ = 'user_info'
           id = db.Column(db.Integer, primary_key=True)
           user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
           first_name = db.Column(db.String(55))
           last_name = db.Column(db.String(55))
           age = db.Column(db.Integer)
           profession = db.Column(db.String(255))
           user = db.relationship('User',uselist=False, cascade='all, delete-orphan',backref=db.backref('info', uselist=False))

       class NotesModel(BaseModel):
           __tablename__ = 'notes'
           title = db.Column(db.String(255), nullable=False)
           desc = db.Column(db.Text)
           user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
           user = db.relationship('User',uselist=False, cascade='all, delete-orphan',backref=db.backref('notes'.lazy='dynamic'))
这样

cascade="all,delete"

是BaseModel继承自db.Model。BaseModel有一些公共字段…谢谢你的回答,但我已经更新了这个问题。事实上,我认为我已经正确地定义了关系,并且在使用db会话删除时它可以工作。但尝试从phpmyadmin中删除时出错。请添加一些文本来解释您的答案