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 sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.