Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

288
Views
¿Puedo evitar las importaciones circulares en Flask y SQLAlchemy?

aplicación/ inicio .py:

 from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__ name __) db = SQLAlchemy(app) from app import views, models

aplicación/modelos.py:

 from app import db # I want to avoid this everywhere

Realmente no me gusta que mis submódulos dependan de su padre. ¿También se pueden evitar las variables del paquete global? Quiero una solución más orientada a objetos.

Creo que una alternativa para la aplicación es usar Blueprints, pero luego pierdo el decorador de ruta. Además, no se puede hacer lo mismo para db con SQLAlchemy (¿o sí?).

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Eche un vistazo a este proyecto: https://github.com/sloria/cookiecutter-flask
Es un gran ejemplo para hacer las cosas de la manera correcta. Se utilizan muchas de las excelentes características de Flask: planos, fábricas de aplicaciones y más.

Así es como registran extensiones, como SQLAlchemy Database:

 # app/extensions.py from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() ... # app/app.py from app.extensions import db def create_app(config_object=ProdConfig): app = Flask(__name__.split('.')[0]) app.config.from_object(config_object) register_extensions(app) ... def register_extensions(app): db.init_app(app) ...
over 4 years ago · Santiago Trujillo Report

0

Intenta usar el 3er. Creamos el archivo exts.py para instanciar SQLAlchemy así:

exts.py

 from flask_sqlalchemy import SQLAlchemy from flask_xxx import xxx db = SQLAlchemy() ...

ejecutar.py

 from flask import Flask from .exts import db, ... def register_extensions(app): db.init_app(app) ... def create_app(config): app = Flask(__ name __) app.config.from_object(config) register_extensions(app) return app app = create_app(config)

modelos.py

 from .exts import db class XXXModel(db.Model): pass
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!