Seite 1 von 1

SQLAlchemy - Erweiterung einer Tabelle durch zweite Tabelle

Verfasst: Mittwoch 27. Mai 2015, 21:28
von Hellstorm
Hallo,

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))
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

Code: Alles auswählen

Select person.person_id, person.anzeigename, asiate.anzeigename_lesung
from person
natural left join asiate;
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!

Re: SQLAlchemy - Erweiterung einer Tabelle durch zweite Tabe

Verfasst: Donnerstag 28. Mai 2015, 21:10
von BlackJack
@Hellstorm: Das sieht ja fast aus wie Vererbung, schau doch mal was man damit in SQLAlchemy so machen kann.