I have a schema that cannot be changed. In it, there is a table with
two columns:
element_type CHAR(1)
element_id INTEGER
There is no foreign key on element_id because it can point to
different, unrelated
tables (element_type) says where element_id points to.
How can I model this in sqlalchemy?
I know how to load and store element using property:
def _get_element(self):
if self.need_element_reload():
clazz = self.get_class_from_type(self._element_type)
self._element =
object_session(self).query(clazz).get(self.element_id)
return self._element
def _set_element(self, element):
self._element_type = self.get_type_from_instance(element)
self._element_id = element.id if element else None
self._element = element
element = property(_get_element, _set_element)
But this is not good enough. For example, if I create new element
which
is not yet flushed, there is no id. Normally, sqlalchemy knows about
relationships and finishes the foreign key column assignment
once the pointed-to id is known. How can I model this type of
relationship so that sqlalchemy will do the right thing
(assign element_id in a flush process, or more generally behave
like this is a normal relationship).
I'm not sure if I explained it correctly, so I'll just mention that
hibernate has <any> element that can do just that.
Thanks,
Tvrtko
--
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.