2017-08-28 4 views
0

Je fais un projet qui fait deux choses: 1) racler les données à partir d'une page Web sur une base horaire et insérer ces données dans une base de données 2) servent des données au format JSON pour une requête donnéeAi-je besoin d'une fabrique d'applications dans mon projet Flask-SQLAlchemy?

je peux l'obtenir fonctionne quand tout (vues, modèles, db.session.add() etc.) se trouve dans un fichier app.py. Cependant ce n'est pas idéal et je voudrais le séparer. Une fois que j'ai un projet en cours, je veux le configurer sur un serveur pour exécuter automatiquement la fonctionnalité de remplissage de base de données/webscraping (1) tout en répondant aux demandes http (2).

Pour cela, ai-je besoin de faire une usine d'application et de tenir compte du contexte de l'application, ou n'est-ce pas nécessaire? À quoi ressemblerait une mise en page de projet minimale, de quels fichiers aurais-je besoin pour séparer mon fichier app.py (et utiliser une fabrique d'applications)?

Répondre

1

La séparation des modèles de app.py ressemblerait à ceci.

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) 

Vous pouvez laisser les vues app.py si l'application est pas trop grand.

Le grattage peut être effectué séparément de l'application Flask. L'application Flask affiche simplement ce qui se trouve dans la base de données. Le scraping est effectué via un script Python, qui met à jour la base de données de temps en temps. Cela peut être planifié pour s'exécuter sur le serveur via cron.