Flask-SQLAlchemy - Когда создаются и уничтожаются таблицы/базы данных?

Я немного смущен тем, о чем упоминается в названии.

Итак, когда приложение Flask запущено, SQLAlchemy ищет SQLALCHEMY_DATABASE_URI для правильной, в моем случае, базы данных MySQL. Затем создает таблицы, если они уже не существуют?

Что делать, если база данных, запрограммированная в переменной SQLALCHEMY_DATABASE_URI в файле config.py, не существует?

Что делать, если эта база данных существует, и существует только несколько из таблиц (Есть больше таблиц, закодированных в код SQLAlchemy, чем в фактической базе данных MySQL)? Удаляет ли эти таблицы и создает новые таблицы с текущими спецификациями?

А что, если все эти таблицы существуют? Удаляются ли они и воссоздаются?

Я пытаюсь понять, как работает весь процесс, чтобы я (1) не терял информацию о базе данных при внесении изменений в схему и (2) мог написать необходимый код, чтобы полностью управлять тем, как и когда SQLAlchemy ведет переговоры с фактической базой данных.

Ответ 1

Таблицы не создаются автоматически; вам нужно вызвать метод SQLAlchemy.create_all() чтобы явно создать таблицы для вас:

db = SQLAlchemy(app)
db.create_all()

Вы можете сделать это с помощью утилиты командной строки, например. Или, если вы развернете в PaaS, например, Google App Engine, выделенный вид только для администратора.

То же самое относится к уничтожению таблицы базы данных; используйте метод SQLAlchemy.drop_all().

См. Главу "Создание и удаление таблиц" в документации или ознакомьтесь с главой, посвященной базам данных, в учебнике по Mega Flask.

Вы также можете делегировать эту задачу Flask-Migrate или аналогичным средствам управления версиями схемы. Они помогут вам записывать и редактировать шаги создания и переноса схемы; схема базы данных реальных проектов никогда не бывает статичной, и вы хотели бы иметь возможность перемещать существующие данные между версиями или схемой. Создание исходной схемы - это только первый шаг.