Ich habe ein Problem mit SQL-Alchemie, beim Versuch, über ein SQL-Schema zu denken, stieß ich auf das folgende Problem.Python SQLalchemy Mehrere Felder einer Tabelle
Mein Schema basiert auf 2 Klassen, Flug und Trip.
Eine Reise beinhaltet 2 Felder: flights_to und flights_from. Jedes der Felder ist im Grunde eine Liste von Flügen, es könnte aus einem Flug oder vielen Flügen (Connection Flights) gemacht werden.
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'))
Das Problem tritt auf, wenn ich zwei Felder in der gleichen Art zu erstellen:
sqlalchemy.exc.ArgumentError: Error creating backref 'Trip' on relationship 'Trip.flights_from': property of that name exists on mapper 'Mapper|Flight|Flight'
ich über die Verwendung von 2 Vererbungsklassen Typen FlightTo und FlightFrom und sie an zwei verschiedenen Tischen gedacht haben, zu speichern, aber was wenn ich ein FlightFrom als FlightTo verwenden möchte? Wird der Flug in 2 Tabellen dupliziert?
Ich würde Ihre Hilfe zu schätzen wissen.
Ich glaube nicht, dass Sie die Frage verstanden, Backref ist nicht einmal notwendig hier, weil Referenzierung von Trip zum Flug nur gemacht wird – toothpick
Gut, was ich versucht habe zu erklären ist, warum Sie den Fehler haben. Um genauer zu sein, da der Fehler erwähnt, dass es keine Rückreferenz mit dem Namen "Trip" auf Flügen erstellen kann, da die Rückreferenz "Trip" bereits von flights_to genommen wurde. In meiner Antwort, der zweite Teil habe ich gerade versucht, ein Beispiel zu zeigen. Der Fehler soll gehen, wenn Sie flights_from Rückverweis umbenennen. – formatkaka