Estoy un poco confundido acerca de la herencia bajo sqlalchemy, hasta el punto en que ni siquiera estoy seguro de qué tipo de herencia (una sola tabla, mesa unida, concreto) debería usar aquí. Tengo una clase base con cierta información que se comparte entre las subclases y algunos datos que están completamente separados. A veces, deseo datos de todas las clases, y algunas veces solo de las subclases. Aquí hay un ejemplo:SQLAlchemy Herencia
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
¿Cómo puedo convertir esto a SQLAlchemy usando declarativo? ¿Cómo, entonces, preguntaría qué edificios están dentro de x>5
y y>3
? ¿O qué edificios residenciales tienen solo 1 residente?
Guau, esta es una gran respuesta. ¡Gracias! Así que he comparado el rendimiento entre las opciones de tabla única y unida, y encuentro que la segunda consulta [filter (Residential.num_residents == n) .count()] se ejecuta ~ 2 veces más rápido en el escenario de tabla única (como se esperaba). Sin embargo, por alguna razón, la primera consulta contra Building [filter ((Building.x> x) & (Building.y> y)). Count()] es aproximadamente un 10% más lenta con la tabla única, aunque en realidad carga todos los elementos es bastante comparable (.all()). – Noah
Para un problema más específico relacionado con la herencia de tablas unidas, vea http: // stackoverflow.com/questions/8389606/how-can-a-sqlalchemy-class-inherit-properly-despite-having-a-tricky-foreignkey-r –
Lo único que falta es un ejemplo que utiliza la herencia concreta de tablas, la que estoy buscando ayuda con, naturalmente :-) Dado que esta es una pregunta antigua, tal vez se agregó la herencia de tabla concreta después de que se respondió esta pregunta. – ThatAintWorking