У меня проблема с SQL Алхимия, пытаясь подумать о схеме SQL. У меня возникла следующая проблема.Python SQLalchemy Несколько полей таблицы
Моя схема основана на 2 классах, рейсах и поездках.
Поездка включает в себя 2 поля: flight_to и flights_from. Любое из полей - это, в основном, список рейсов, это может быть сделано из одного рейса или много рейсов (полеты по соединению).
class Trip(Base):
__tablename__ = "Trip"
__table_args__ = {'sqlite_autoincrement': True}
id = Column(Integer, primary_key = True)
flights_to = relationship("Flight", backref="Trip")
flights_from = relationship("Flight", backref="Trip")
class Flight(Base):
__tablename__ = "Flight"
__table_args__ = {'sqlite_autoincrement': True}
id = Column(Integer, primary_key = True)
arrival_airport = Column(String(20))
departure_airport = Column(String(20))
flight_number = Column(Integer)
trip_id = Column(Integer, ForeignKey('Trip.id'))
Проблема происходит, когда я создаю 2 поля того же типа:
sqlalchemy.exc.ArgumentError: Error creating backref 'Trip' on relationship 'Trip.flights_from': property of that name exists on mapper 'Mapper|Flight|Flight'
Я думал об использовании 2 наследованию классов типов FlightTo и FlightFrom и сохранение их в двух различных таблицах, но то, что если я хочу использовать FlightFrom как FlightTo? будет ли полет дублироваться в 2 столах?
Примите во внимание вашу помощь.
Я не думаю, что вы поняли вопрос, backref здесь даже не нужен, потому что ссылка сделана только от поездки до полета – toothpick
Ну, что я пробовал чтобы объяснить, почему вы получили ошибку. Чтобы быть более явным, поскольку в ошибке упоминается, что он не может создать обратную ссылку с именем «Поездка» на рейсах из-за того, что обратная ссылка «Поездка» уже была сделана flight_to. В моем ответе вторая часть, которую я только что попробовал показать примеру. Ошибка будет идти, если вы переименуете flight_from обратную ссылку. – formatkaka