Python 如何以及在何处删除Flask-SQLAlchemy中的行
我正在使用flask和flask SQLAlchemy以及sqlite3和python 3.8构建一个项目。我有models.py,它保存数据库的所有表,我想有一个静态方法,它删除Articles表中的行,这取决于它们的一个属性 我想在models类中编写这个函数,想问问这是否合适。 该函数如下所示:Python 如何以及在何处删除Flask-SQLAlchemy中的行,python,database,sqlite,flask,flask-sqlalchemy,Python,Database,Sqlite,Flask,Flask Sqlalchemy,我正在使用flask和flask SQLAlchemy以及sqlite3和python 3.8构建一个项目。我有models.py,它保存数据库的所有表,我想有一个静态方法,它删除Articles表中的行,这取决于它们的一个属性 我想在models类中编写这个函数,想问问这是否合适。 该函数如下所示: def update_articles(): all_articles = Articles.query.all() for article in all_articles:
def update_articles():
all_articles = Articles.query.all()
for article in all_articles:
if needs_to_be_deleted(article):
db.session.delete(article)
db.session.commit()
那功能好吗?别介意需要删除的东西。我删除这篇文章的方式好吗?这个功能可以放在models.py文件中吗?根据我的经验,这里一切都很好。一般来说,您应该将应用程序设计为: 模型应该做最强大的事情 视图只应执行逻辑工作 模板应该是哑的。他们应该只是渲染一些东西。 现在我说的是上面提到的,我的意思是说所有与数据库操作相关的东西都应该在模型中。就像你现在做的一样。大多数情况下,数据库中的所有事务都是简单的事务,可以使用ORM用几行代码编写。但有时,如果你觉得有些事情需要一次又一次地做,或者你想有一个方法来做一些大事。那么,最好只在您的模型中使用它。您提到的方法应该是文章模型的一部分。模型中可能存在的其他内容可能是向用户发送电子邮件或其他一些常规任务等操作 就你的观点而言。他们应该执行所有合乎逻辑的事情。您的业务逻辑基本上由视图实现 最后,模板应该完成呈现视图提供给它们的任何内容的工作 显然没有这样的硬性规定。上述情况可能有例外。或者有人可以找到其他比我提到的更好的方法。为此,你需要用你自己的良心,没有人能教你这一点。它来自经验 请阅读以下文章以供参考: 此外,您可能正在使用此功能,但如果您没有: 还有一个小建议。虽然我不清楚你的要求。但是,如果您可以在for循环之后,即在方法的最后提交,则会更好。一个请求通常应该只有一个提交