Я использую Flask-SQLAlchemy и Blueprints, и я не могу помочь себе использовать циклический импорт. Я знаю, что я могу писать импорт внутри функций и заставить работать, но это звучит неприятно, я бы хотел подтвердить сообщество, если есть лучший способ сделать это.
Проблема заключается в том, что у меня есть модуль (blueprints.py), где я объявляю базу данных и импортирую чертежи, но эти чертежи должны одновременно импортировать объявление базы данных.
Это код (выдержка из важных частей):
application.apps.people.views.py
from application.blueprints import db
people = Blueprint('people', __name__,
template_folder='templates',
static_folder='static')
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
@people.route('/all')
def all():
users = User.query.all()
application.blueprints.py
from application.apps.people.views import people
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
app.register_blueprint(people, url_prefix='/people')
Я прочитал документацию и вопросы, которые я нашел по этой теме, но я все еще не могу найти ответ, который я ищу. Я нашел эту главу (https://pythonhosted.org/Flask-SQLAlchemy/contexts.html), где предлагается поместить код инициализации внутри метода, но циклический импорт все еще сохраняется.
Edit Я исправил проблему, используя шаблон Приложение Factory