【问题标题】:Why do I need models.py for a Flask app?为什么我需要 models.py 用于 Flask 应用程序?
【发布时间】:2015-12-09 22:55:05
【问题描述】:

作为一个webapp新手,我不确定是否需要定义models.py。

我已经在 Heroku 上建立了一个可用的 Postgres 数据库,我已将它与 Postico 和 pgAdmin 链接起来。使用这些 GUI,我似乎可以非常简单地获取和发布数据,并进行结构更改。

大多数教程似乎都忽略了具有 models.py 的细节和推理。谢谢!

【问题讨论】:

  • 如果你有模型并且想把它们放在models.py中,你可以这样做。如果你不这样做,不要。 Flask 不需要任何特定的文件名。

标签: postgresql flask


【解决方案1】:

Web 框架通常强制或鼓励使用 Model-View-Controller (MVC) 模式来构建代码,从而使数据库代码与表示层分开。

像 django 这样的框架带有 ORM 功能,并且与用于实现 MVC 框架的功能更加集成。 ORM 允许您以编程方式与数据库交互,而无需编写 sql 代码。它可以让你创建一个模式并通过将编程类映射到表和对象到行来与之交互。

Flask 与许多其他 Web 框架(如 django)的区别在于,它被认为是一个微框架。它重量轻,可以通过添加扩展来扩展。如果您需要数据库集成,则可以将其与外部 ORM 工具一起使用,例如 sqlalchemy(以及可选的 flask-sqlalchemy 扩展)。然后,您可以定义一个 sqlalchemy 模型,例如,在名为 model.py 或 schema.py 的文件中,或您认为合适的任何其他名称。

如果您只需要对现有的 postgres 数据库运行一两个查询并且觉得不需要使用 ORM,则可以简单地使用带有 postgres 驱动程序的flask并自己编写 sql。不一定要有模型。

模型/ORM 可能是有益的。例如,如果您想重新创建数据库的集成/测试实例,您可以指示 ORM 工具通过部署模型在另一台主机上创建数据库的新实例。模型还为数据库提供了编程抽象,理论上这应该使您的代码更加独立于数据库(理论上,很难实现这一点,因为数据库可能会有细微的差异),并且应该使您的代码与特定数据库的联系更少解决方案。此外,它还减轻了在语言中编写语言的需要(python 代码中的 sql 文本字符串)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 2021-02-21
    • 1970-01-01
    • 2011-10-13
    • 2015-11-23
    • 2013-05-14
    • 2012-07-22
    相关资源
    最近更新 更多