SQLAlchemy - Erweiterung einer Tabelle durch zweite Tabelle
Verfasst: Mittwoch 27. Mai 2015, 21:28
Hallo,
ich habe zwei Tabellen:
Also jeder Asiate ist eine Person, aber nicht jede Person ist ein Asiate. Wenn jemand ein Asiate ist, möchte ich gerne die drei Felder hinzufügen. Mit einem
Kann ich das nachher auch anzeigen lassen und es klappt auch soweit ganz gut (Was hat mich das „Column(Integer, ForeignKey("person.person_id"), primary_key=True)“ für Zeit gekostet...).
Naja, gut, aber wie kann ich darauf nun vom Person-Objekt her anständig drauf zugreifen? Ich möchte halt sinnvollerweise schreiben können:
eineperson.anzeigename_lesung = "blabla"
und dann soll er automatisch einen Eintrag in der Asiaten-Tabelle erstellen, aber nur dann. Ich bin mir ziemlich sicher, dass das irgendwie gehen soll, wahrscheinlich auch irgendwie mit Backref, aber ich versteh es nicht so ganz. Das One to One-Kapitel in der Doku passt irgendwie nicht ganz zu meinem Anwendungsfall...
Danke!
ich habe zwei Tabellen:
Code: Alles auswählen
class Person(Base):
__tablename__ = "person"
person_id = Column(Integer, primary_key=True)
anzeigename = Column(String, nullable=False)
familienname = Column(String(255))
vorname = Column(String(255))
sprache = Column(String(10))
class Asiate(Base):
__tablename__ = "asiate"
person_id = Column(Integer, ForeignKey("person.person_id"), primary_key=True)
anzeigename_lesung = Column(String(255))
familienname_lesung = Column(String(255))
vorname_lesung = Column(String(255))
Code: Alles auswählen
Select person.person_id, person.anzeigename, asiate.anzeigename_lesung
from person
natural left join asiate;
Naja, gut, aber wie kann ich darauf nun vom Person-Objekt her anständig drauf zugreifen? Ich möchte halt sinnvollerweise schreiben können:
eineperson.anzeigename_lesung = "blabla"
und dann soll er automatisch einen Eintrag in der Asiaten-Tabelle erstellen, aber nur dann. Ich bin mir ziemlich sicher, dass das irgendwie gehen soll, wahrscheinlich auch irgendwie mit Backref, aber ich versteh es nicht so ganz. Das One to One-Kapitel in der Doku passt irgendwie nicht ganz zu meinem Anwendungsfall...
Danke!