Hi,
I am playing with the mapping inheritance structures to my database.
I have a the following hierarchy:
class Tag(object):
pass
class NormalisedNameTag(Tag):
pass
class NormalisedPlaceTag(Tag):
pass
The idea is that a pre-processing step will produce a series of tags
and then all of the Tags will be postprocessed to normalise them ( map
them to a specific identifier in a controlled vocabulary).
mapper(Tag, tags_table, polymorphic_on=tags_table.c.type)
mapper(NormalisedNameTag, tag_name_normalised_table,
polymorphic_identity='NAME', inherits=Tag )
mapper(NormalisedPlaceTag, tag_name_normalised_table, inherits=Tag,
polymorphic_identity="PLACE")
however, if I do the following
for entity in session.query(SDY.Tag).filter(SDY.Tag.type ==
"NAME").filter(SDY.Tag.deleted == 0):
print entity, type(Entity)
# look up entity in a dictionary and assign an identifier to it
and store in NormalisedNameTag
entity.name_id = dictionary[ entity.word ]
session.commit()
then SQLAlchemy decides that it is actually looking for
NormalisedNameTag instead of just plain old Tag.
raise exc.ObjectDeletedError("Instance '%s' has been deleted." %
state_str(state))
sqlalchemy.orm.exc.ObjectDeletedError: Instance '<NormalisedNameTag at
0x2004ef0>' has been deleted.
So I am confusing SQLAlchemy into thinking that the object has been
deleted when in fact I have never created it? So is there a way round
for this? Can you defer the loading of the inheritance mapping until
later?
Many thanks in advance, yet again,
Nathan
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---