我的Flask-SQLAlchemy项目中是否需要应用程序工厂?

时间:2017-08-28 10:51:15

标签: python flask sqlalchemy flask-sqlalchemy

我正在制作一个项目,它做两件事:1)每小时从网页抓取数据并将这些数据插入数据库 2)为给定查询提供json格式的数据

当所有内容(views,models,db.session.add()等)都在app.py文件中时,我可以使它工作。然而,这并不理想,我想把它分开。

一旦我有一个工作项目,我想在服务器上设置它以自动运行webscraping /数据库填充功能(1),同时还响应http请求(2)。

为此,我是否需要沿着制作应用程序工厂的路线并考虑应用程序上下文,或者这不是必需的吗?为了分离我的app.py文件(并使用应用程序工厂),我需要什么样的最小项目布局/我需要什么文件。

1 个答案:

答案 0 :(得分:1)

将模型与app.py分开会看起来像这样。

models.py:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Post(db.Model):
    ...

class User(db.Model):
    ...

app.py:

from models import db, Post, User

app = Flask(__name__)
db.init_app(app)

如果应用程序不是太大,您可以将视图保留在app.py中。

抓取可以与Flask app分开进行。 Flask应用程序只显示数据库中的任何内容。抓取是通过Python脚本完成的,该脚本会不时更新数据库。这可以安排在cron的服务器上运行。