我的User模型与模型有关系Address.我已经指定关系应该级联删除操作.但是,当我查询并删除用户时,我收到一个错误,即仍然引用了地址行.如何删除用户和地址?
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
addresses = db.relationship('Address', cascade='all,delete', backref='user')
class Address(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey(User.id))
Run Code Online (Sandbox Code Playgroud)
db.session.query(User).filter(User.my_id==1).delete()
Run Code Online (Sandbox Code Playgroud)
IntegrityError: (IntegrityError) update or delete on table "user" violates foreign key constraint "addresses_user_id_fkey" on table "address"
DETAIL: Key (my_id)=(1) is still referenced from table "address".
'DELETE FROM "user" WHERE "user".id = %(id_1)s' {'id_1': 1}
Run Code Online (Sandbox Code Playgroud) 假设我得到这样的模型实例:
instance = session.query(MyModel).filter_by(id=1).first()
Run Code Online (Sandbox Code Playgroud)
我该如何删除该行?有特殊的方法可以打电话吗?
我正在尝试使用flask和SQLAlchemy的扩展来创建一个删除数据库中记录的函数.问题是,它不是只删除一行,而是删除所有行.有人能告诉我我的代码有什么问题吗?
@app.route('/admin/delete/<int:page_id>', methods=['GET','POST'])
@requires_auth
def delete_page(page_id):
page = Page.query.get(page_id)
if not page:
abort(404)
if page.children:
flash('You can not delete a page with child pages. Delete them, or assign them a different parent.',
'error')
return redirect(url_for('admin_page'))
if request.method == 'POST':
Page.query.get(page_id).query.delete()
db.session.commit()
flash('Page was deleted successfully', 'success')
return redirect(url_for('admin_page'))
return render_template('admin_delete.html', page_title=page.title, page_id=page_id)
Run Code Online (Sandbox Code Playgroud)
提前致谢!