Jestem trochę zdezorientowany dziedziczeniem pod sqlalchemy, do tego stopnia, że nie jestem nawet pewien, jakiego rodzaju dziedziczenia (pojedynczy stół, stół połączony, beton) powinienem tu używać. Mam klasy bazowej z pewnymi informacjami, które są wspólne dla podklas i niektóre dane, które są całkowicie oddzielne. Czasami chcę danych ze wszystkich klas, a czasem tylko z podklas. Oto przykład:Dziedziczenie SQLAlchemy
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
Jak przekonwertować to do SQLAlchemy za pomocą deklaratywnego? Jak zatem zapytać, które budynki mieszczą się w zakresie x>5
i y>3
? Albo które budynki mieszkalne mają tylko jednego mieszkańca?
Wow, to jest świetna odpowiedź. Dzięki! Porównywałem więc wydajność między jedną a połączonymi opcjami tabeli i stwierdziłem, że drugie zapytanie [filtr (Residential.num_residents == n) .count()] działa ~ 2x szybciej w scenariuszu z jedną tabelą (zgodnie z oczekiwaniami). Jednak z jakiegoś powodu pierwsze zapytanie dotyczące budynku [filter ((Building.x> x) i (Building.y> y)) count()] jest o 10% wolniejsze w przypadku pojedynczej tabeli, ale faktycznie ładuje wszystkie elementy jest dość porównywalne (.all()). – Noah
Aby uzyskać bardziej szczegółowy problem dotyczący połączonego dziedziczenia tabel, zobacz http: // stackoverflow.com/questions/8389606/how-can-a-sqlalchemy-class-inherit-correct-despite-having-a-tricky-foreignkey-r –
Brakuje tylko przykładu użycia konkretnego dziedziczenia tabel - tego, którego szukam naturalnie pomóc :-) Ponieważ jest to stare pytanie, być może konkretne dziedziczenie tabeli zostało dodane po udzieleniu odpowiedzi na to pytanie. – ThatAintWorking