Python SQLAlchemy对象已附加到会话,然后在刷新时DetachedInstanceError仍会添加到数据库
我在使用SQLAlchemy建立烧瓶中的多对多关系时遇到了一些问题。我有两个模型和关系表。当我创建Python SQLAlchemy对象已附加到会话,然后在刷新时DetachedInstanceError仍会添加到数据库,python,flask,sqlalchemy,flask-sqlalchemy,Python,Flask,Sqlalchemy,Flask Sqlalchemy,我在使用SQLAlchemy建立烧瓶中的多对多关系时遇到了一些问题。我有两个模型和关系表。当我创建组对象时,我希望该组将创建组的用户作为成员,并且该用户应该将创建的组作为组 但是,当我提交表单以创建组时,我得到一个InvalidRequestError,表示对象“”已附加到会话“1”(这是“2”) 然后,如果我刷新页面,重新提交表单,它将成功创建组和数据库关系。但是,它显示了一个DetachedInstanceError,表示父实例未绑定到会话;属性“组”的延迟加载操作无法继续。在我重新启动服务
组
对象时,我希望该组将创建组的用户作为成员,并且该用户应该将创建的组作为组
但是,当我提交表单以创建组时,我得到一个InvalidRequestError
,表示对象“”已附加到会话“1”(这是“2”)
然后,如果我刷新页面,重新提交表单,它将成功创建组和数据库关系。但是,它显示了一个DetachedInstanceError
,表示父实例未绑定到会话;属性“组”的延迟加载操作无法继续。在我重新启动服务器之前,将显示该错误
相关代码:
db:
型号:
groups = db.Table('user_groups',
db.Column('group_id', db.Integer, db.ForeignKey('groups.id')),
db.Column('user_id', db.Integer, db.ForeignKey('users.id'))
)
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
groups = db.relationship('Group', secondary=groups,
backref=db.backref('members', lazy='dynamic'))
class Group(db.Model):
__tablename__ = 'groups'
id = db.Column(db.Integer, primary_key=True)
正在尝试将组添加到数据库:
g = Group()
db.session.add(g)
u = User.query.filter_by(googleID=session.get('id')).first()
g.members.append(u)
db.session.commit()
感谢您的帮助 所以我把它修好了。。。问题是我正在将数据库变量(db)导入到我的模型文件中。显然这是个禁忌,所以我只是把它复制/粘贴到主文件中
g = Group()
db.session.add(g)
u = User.query.filter_by(googleID=session.get('id')).first()
g.members.append(u)
db.session.commit()