You're mixing single-table inheritance (using the discriminator column),
with concrete inheritance (using multiple tables).
You have to pick one scheme or the other. Either use a single inheritance
chain, or separate the two class hierarchies into two separate chains that
don't inherit from each other. In the separate scheme, each chain can use
it's own discriminator column, but you cannot combine two class hierarchies
that each use a different discriminator column.
On Jan 10, 2008 8:46 PM, Alexandre da Silva <[EMAIL PROTECTED]> wrote:
>
>
> Em Qui, 2008-01-10 às 17:13 -0800, jason kirtland escreveu:
> > col.default.arg
>
> Yes, exactly this.
>
> another question
>
> How many levels I can inherit classes/tables without get something
> wrong?
>
> let me show a simplest sample hierarchy:
>
> resource
> / \
> person material
> / \
> employee customer
>
>
> now, I am creating a type column on resource to map persons and
> materials, them I am creating another type column on person, to get
> mapped the various types of persons.
>
> by this way, I could get a employee instance, just selecting a resource
> but something is going wrong, because the column type on resource is not
> filled with correct value, and I am getting NOT NULL CONSTRAINT by
> insert an employee.
>
>
> the tables
>
> resource_table = Table(
> Column('id',Integer, primary_key=True),
> Column('poly', String(31), nullable=False)
> )
>
> person_table = Table(
> Column('id',Integer, primary_key=True, ForeignKey('resource.id'),
> primary_key=True)),
> Column('poly', String(31), nullable=False)
> )
>
> employee_table = Table(
> Column('id',Integer, primary_key=True, ForeignKey('person.id'),
> primary_key=True)),
> )
>
> the classes
>
> class Resource(object):
> pass
>
> class Person(Resource):
> pass
>
> class Employee(Person):
> pass
>
>
> mappers
>
> mapper(Resource, resource_table,
> polymorphic_on=resource_table.c.poly,
> polymorphic_identity='resource'
> )
>
> mapper(Person, person_table,
> polymorphic_on=person_table.c.poly,
> inherits=Resource, polymorphic_identity='person'
> )
>
>
> mapper(Employee employee_table,
> inherits=Person, polymorphic_identity='employee',
> )
>
>
> is all, now when I create an instance of Employee and try to save, I get
> back an integrity error, that resource.poly cannot be null
>
> any suggestion?
>
> thank's for previous replies.
>
>
> --
> Alexandre da Silva
> Analista de Sistemas - Bacharel em Sistemas de Informação (2003-2007)
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---