热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:PythonFlask没有从SQLAlchemy数据库中删除正确的id

篇首语:本文由编程笔记#小编为大家整理,主要介绍了PythonFlask没有从SQLAlchemy数据库中删除正确的id相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python Flask没有从SQLAlchemy数据库中删除正确的id相关的知识,希望对你有一定的参考价值。



我有一个HTML表从SQLAlchemy数据库中提取数据。

在这个表中,对于每一行,我有一个Delete按钮,当我点击它时应删除该行和数据库条目。

我遇到的问题是,如果我尝试删除此表中的任何行,它只删除第一行(见下图)和数据库中的相关数据。

我想删除的行和数据保持不变(下图中的第3行)。

enter image description here

如果我在表格的第一行单击Delete,它可以正常工作。

Update按钮用作缩进(更新正确的条目)

这是我的数据库模型:

class ActualPost(db.Model):
__tablename__ = 'actualpost'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
title_actual = db.Column(db.String(30), nullable=False, default='actual')
category_actual = db.Column(db.String(30), nullable=False, default=None)
actual_amount_name = db.Column(db.String(30), nullable=True)
actual_amount = db.Column(db.Float, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
comments = db.Column(db.Text, nullable=True)
def __repr__(self):
return f"ActualPost('{self.title_actual}, '{self.category_actual}'
, '{self.actual_amount_name}', '{self.actual_amount}'
, '{self.date_posted}', '{self.comments}')"

这是我的路线(更新和删除)

@posts.route("/post//update_actual", methods=['GET', 'POST'])
@login_required
def update_actual_post(post_id):
post = ActualPost.query.get_or_404(post_id)
if post.actual_author != current_user:
abort(403)
form = PostActualForm()
if form.validate_on_submit():
post.title_actual = form.title_actual.data
post.category_actual = form.category_actual.data
post.actual_amount_name = form.actual_amount_name.data.name
post.actual_amount = form.actual_amount.data
post.comments = form.comments.data
db.session.commit()
flash('Your post has been updated!', 'success')
return redirect(url_for('main.actual', post_id=post.id))
elif request.method == 'GET':
form.title_actual.data = post.title_actual
form.category_actual.data= post.category_actual
form.actual_amount_name.data = post.actual_amount_name
form.actual_amount.data = post.actual_amount
form.comments.data = post.comments
return render_template('create_actual_post.html', title='Update Actual',
form=form, legend='Update Actual')
@posts.route("/post//delete_actual", methods=['POST'])
@login_required
def delete_actual_post(post_id):
post = ActualPost.query.get_or_404(post_id)
if post.actual_author != current_user:
abort(403)
db.session.delete(post)
db.session.commit()
flash('Your post has been deleted!', 'success')
return redirect(url_for('main.actual', post_id=post.id))

这是我用于删除按钮的HTML代码:



答案

这是我通过id删除特定行的代码。您可以将其与您的代码联系起来

SQLalchemy模型:

class Componants(db.Model):
__tablename__ = 'componants'
id = db.Column(db.Integer, primary_key=True)
cmp_optiOns= db.Column(db.Text, default=None)
updated_at = db.Column(db.DateTime, nullable=True)
created_at = db.Column(db.DateTime, nullable=True)
def __init__(self , cmp_options ):
self.cmp_optiOns= cmp_options
self.created_at = datetime.now()
self.updated_at = datetime.now()
def __repr__(self):
return ''.format(self.id)

控制器:

@componants_blueprint.route('/delete_component/')
@login_required
def delete_component(component_id):
compOnent= Componants.query.filter_by(id=component_id).first_or_404()
db.session.delete(component)
db.session.commit()
return True

视图:


{% for item in all_components %}

{{ item.id }}
{{ item.cmp_options }}
{{ item.created_at }}




{% endfor %}



推荐阅读
  • 本文介绍了在序列化时如何对SnakeYaml应用格式化,包括通过设置类和DumpSettings来实现定制输出的方法。作者提供了一个示例,展示了期望的yaml生成格式,并解释了如何使用SnakeYaml的特定设置器来实现这个目标。对于正在使用SnakeYaml进行序列化的开发者来说,本文提供了一些有用的参考和指导。摘要长度为169字。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
author-avatar
骑猪猪-逛恋空
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有