Flask -SQLAlchemy, как иметь один класс, который можно использовать в нескольких таблицах - PullRequest
0 голосов
/ 25 мая 2020

Как я могу изменить, в какую таблицу вставлять экземпляры класса? С синтаксисом PostgreSQL я могу указать, какую таблицу я хочу, сказав INSERT INTO departures..., однако с SQLAlchemy таблица привязана к классу, поэтому я не могу изменить таблицу во всем приложении.

Я немного изучил это, и ниже я могу найти лучшее решение, которое я смог найти:

def create_model(table_type):
    class Flight(db.Model):
        __tablename__ = table_type
        __table_args__ = {'extend_existing': True}
        id = db.Column(db.Integer, primary_key = True)
        username = db.Column(db.String, nullable = False)
        ...
    globals().update(locals())

Я использую вышеупомянутую модель, выбирая table_type перед выполнением любого Действие с базой данных выглядит так:

create_model("departures")
db.session.add(flight1)
db.session.commit()

Есть ли лучший способ сделать это? Это кажется довольно неэффективным и вызывает проблемы при импорте класса в разные файлы.

1 Ответ

0 голосов
/ 27 мая 2020

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

Глядя на вашу модель и пример, я бы предложил вам добавить type столбец, содержащий departures или arrivals. Таким образом, вы можете сохранить данные в чистоте и по-прежнему иметь возможность запрашивать то, что вам нужно.

...