我正在制作一个项目,它做两件事:1)每小时从网页抓取数据并将这些数据插入数据库 2)为给定查询提供json格式的数据
当所有内容(views,models,db.session.add()等)都在app.py文件中时,我可以使它工作。然而,这并不理想,我想把它分开。
一旦我有一个工作项目,我想在服务器上设置它以自动运行webscraping /数据库填充功能(1),同时还响应http请求(2)。
为此,我是否需要沿着制作应用程序工厂的路线并考虑应用程序上下文,或者这不是必需的吗?为了分离我的app.py文件(并使用应用程序工厂),我需要什么样的最小项目布局/我需要什么文件。
答案 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
的服务器上运行。