Я бы отделил загрузку исходных данных базы данных от инициализации приложения, потому что, вероятно, исходные данные из моего опыта не будут часто изменяться и могут занять некоторое время, если файл больше, и обычно вам не нужно каждый раз перезагружать его в базе данных. время приложения загружается.
Я думаю, что вам наверняка понадобится миграция базы данных на каком-то этапе разработки приложения, поэтому я бы предложил настроить Flask-Migrate для этого и запустить метод обновления при создании приложения (create_app
метод, если вы используете Flask шаблон фабрики приложений ), который будет обрабатывать миграции баз данных. Я говорю это, так как это избавит вас от головной боли, когда вы представите его позже в базе данных, уже заполненной фактическими данными, инициализированными с db.create_all()
.
А для заполнения базы данных начальными данными я бы выбрал Flask CLI или Flask-Script . В одном из моих недавних проектов я использовал для этого Flask-Script и создал отдельный файл manage.py
, который среди других методов управления приложениями содержал метод начального заполнения данных, который выглядел примерно так:
@manager.command
def seed():
"Load initial data into database."
db.session.add(...)
db.session.commit()
И он был запущен по требованию с помощью следующей команды:
python manage.py seed