Создание различных таблиц из какой-либо модели с помощью Flask-Sqlalchemy - PullRequest
0 голосов
/ 01 мая 2019

Из документов я вижу, как создавать модели, необходимые для последующего создания таблиц.

Я хочу создать различные таблицы, каждая с разным __tablename__ атрибутом, но все они с одинаковыми свойствами, поэтому необходим только один класс Model, который будет служить моделью для всех таблиц.

Я посмотрел на параметр db.metadata, но в документации указано, что он предназначен только для чтения.

EDIT1:

Чтобы создать таблицу из модели, я создаю

class Sample(db.Model):
    //code here

затем для создания таблицы из модели запускается скрипт, который выполняет

manage.py migrate
manage.py update

Каков будет правильный способ создания упомянутых таблиц во время выполнения?

EDIT2:

Найдя вопрос по SO , похожий на мой, я попробовал принятый ответ, в котором предлагается использовать type для создания таблиц, но, похоже, он работает не так, как ожидалось.

В моем файле app/my_model.py есть модель, которая сначала унаследована от db.Model, но позже удалила ее, следуя примеру из упомянутого вопроса. В моем app/routes.py, когда я запускаю type(name.title(), (MyModel, db.Model), { '__tablename__' : name }) и печатаю данный объект, я получаю <class 'app.routes.name'>, в отличие от ожидаемого <class 'flask_sqlalchemy.Name'>.

Я опубликовал отдельный вопрос, потому что сомнение шире, чем то, что охватывает существующий вопрос, я думаю.

Заранее спасибо!

1 Ответ

0 голосов
/ 02 мая 2019

Я думаю, мне удалось заставить его работать (тест, который создает таблицу, а затем проверяет, существует ли таблица в проходах базы данных! Хотя оператор print все еще печатает неожиданное сообщение).

Мне пришлось

  • наследуется от db.Model при определении MyModel в app/my_model.py.
  • набор __abstract__ = True.

Теперь команда type: type(name.title(), (MyModel, db.Model), { '__tablename__' : name }).

Теперь я имею дело со вставкой данных, поскольку мне нужно найти способ указать, к какой таблице они должны идти. Class xxx is not mapped ошибка ... Но это еще одна проблема! (За что, если у кого-то есть комментарии, буду более чем благодарен!).

Спасибо всем, кто помог!

...