[pyar] Herencia en SQLAlchemy

Tomas Zulberti tzulberti en gmail.com
Mar Jul 29 14:32:29 ART 2014


Hola.

Tengo dos modelos en SQLAlchemy:

- Persona
- Usuario

Donde quiero que Usuario extienda de Persona. El tema es que a
diferencia de los ejemplos de SQLAlchemy, la clase base Persona tiene
sentido sola. Es decir, existe un registro de varias personas, y para
alguna de ellas se crea el registro de Usuario.

Los modelos son algo asi:

class Persona(db.Model):
     __mapper_args__ = {'polymorphic_on': 'person_type'}
     id = db.Column(db.Integer, nullable=False, primary_key=True)
     email = db.Column(db.String(1024), nullable=False)
     person_type = db.Column(db.String(20), nullable=False)



class Usuario(Persona):
     __mapper_args__ = {'polymorphic_identity': 'usuario'}
     id = db.Column(db.Integer, db.ForeignKey('persona.id'),
primary_key=True, nullable=False)
     password = db.Column(db.String(1024), nullable=False)


El problema es que quiero poder hacer algo como esto y no encuentro la forma:

>>> p = Person(email='pepe en gmail.com')
>>> db.session.add(p)
>>> db.session.commit()
>>> print p.id
3
>>> u = Usuario(id=3, password='UN HASH')
>>> db.session.add(u)
>>> db.session.commit()
(IntegrityError) null value in column "email" violates not-null constraint
'INSERT INTO persona (id, name,

Es decir, esta intentando de insertar una persona cuando yo lo unico
que quiero que cree es el valor de una persona

Muchas gracias,
Tomas Zulberti


More information about the pyar mailing list