为什么我需要models.py用于Flask应用程序?

时间:2015-12-09 22:55:05

标签: postgresql flask

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

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

大多数教程似乎都在讨论拥有models.py的细节和推理。谢谢!

1 个答案:

答案 0 :(得分:5)

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

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

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

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

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