Как создать (в Flask с помощью flask-SA и т. д.) файл базы данных SQLite с metadata.create_all(..)

У меня есть фляжное приложение, разбросанное по модулям с чертежами. Каждый модуль/схема имеет свой собственный файл models.py, в котором определяются модели.

Когда приложение запускается, я хотел бы, чтобы SQLAlchemy создал файл SQLite в месте, указанном с конфигурацией SQLALCHEMY_DATABASE_URI.

С обычным приложением Python без каких-либо слоев извлечения выше SA с использованием base.metadata.create_all(..)

Как я могу сделать это с расширением Flask и SQLAlchemy?


person Phil    schedule 17.11.2013    source источник


Ответы (1)


Я подозреваю, что у вас есть где-то:

db = SQLAlchemy(app)

так что все, что вам нужно сделать, это

db.create_all()
person Paweł Pogorzelski    schedule 17.11.2013
comment
Я пытаюсь github.com/mitsuhiko/flask/wiki/Large-app -how-to пример автора. Я попытался поместить db.create_all() сразу после db = SQLAlchemy(app), однако он создает файл размером zero bytes. - person Phil; 17.11.2013
comment
Вам нужно сделать create_all после того, как вы импортируете модели, которые хотите создать. - person Paweł Pogorzelski; 17.11.2013
comment
Спасибо! Дурак я. ;-) - person Phil; 17.11.2013
comment
Быстрый вопрос: скажем, у меня есть 2 или более чертежей/модулей с их собственными моделями.py (как указано выше). Если эти две модели зависят друг от друга и должны импортировать друг друга (циклически), можно ли это сделать? (например: cars может понадобиться users, а users может понадобиться cars) - person Phil; 17.11.2013
comment
У меня аналогичная настройка (отдельные приложения/чертежи) и никаких проблем с ней. - person Paweł Pogorzelski; 17.11.2013
comment
Большое спасибо @PawelPogorzelski! - person Phil; 18.11.2013