Ich bin ein wenig verwirrt über die Vererbung unter sqlalchemy, bis zu dem Punkt, wo ich nicht einmal sicher bin, welche Art der Vererbung (einzelne Tabelle, gefügten Tabelle, Beton) ich hier verwenden sollte. Ich habe eine Basisklasse mit einigen Informationen, die unter den Unterklassen geteilt werden, und einige Daten, die vollständig getrennt sind. Manchmal möchte ich Daten aus allen Klassen und manchmal nur aus den Unterklassen. Hier ist ein Beispiel:SQLAlchemy Vererbung
class Building:
def __init__(self, x, y):
self.x = x
self.y = y
class Commercial(Building):
def __init__(self, x, y, business):
Building.__init__(self, x, y)
self.business = business
class Residential(Building):
def __init__(self, x, y, numResidents):
Building.__init__(self, x, y, layer)
self.numResidents = numResidents
Wie würde ich dies zu SQLAlchemy mit deklarativen konvertieren? Wie würde ich dann fragen, welche Gebäude innerhalb von x>5
und y>3
liegen? Oder welche Wohngebäude haben nur 1 Bewohner?
Wow, das ist eine gute Antwort. Vielen Dank! Also habe ich die Leistung zwischen den Optionen für einzelne und verbundene Tabellen verglichen und festgestellt, dass die zweite Abfrage [filter (Residential.num_residents == n) .count()] im Szenario mit einer einzelnen Tabelle ~ 2x schneller ausgeführt wird (wie erwartet). Aus irgendeinem Grund ist die erste Abfrage gegen Building [filter ((Building.x> x) & (Building.y> y)). Count()] in der einzelnen Tabelle ungefähr 10% langsamer, lädt aber tatsächlich alle Elemente ist ziemlich vergleichbar (.all()). – Noah
Für ein spezifischeres Problem in Bezug auf die Vererbung von verknüpften Tabellen siehe http: // stackoverflow.com/questions/8389606/how-can-a-sqlalchemy-Klasse-erben-richtig-trotz-haben-eine-tricky-Fremdschlüssel-r –
Das einzige, was fehlt, ist ein Beispiel mit konkreten Tabelle Vererbung - die, die ich suche Hilfe bei, natürlich :-) Da dies eine alte Frage ist, wurde vielleicht eine konkrete Tabellenvererbung hinzugefügt, nachdem diese Frage beantwortet wurde. – ThatAintWorking