On May 15, 2008, at 3:23 PM, Chris Guin wrote: > My goal is to have a one-to-many relation defined using the same > name as the foreign key column underneath. So that, if my > "Detection" table has a foreignkey column named "sensor," the > following mappers should work, I think:
allow_column_override is not used for this, its used to entirely obliterate the knowledge of the underlying Column so that you can place a relation() there instead. Its also deprecated since the same effect can be acheived with "exclude_columns" (thanks for reminding me so i can remove it from 0.5). Since you dont want to obliterate the column and you actually need it, do this: mapper(Class, mytable, properties={ '_actual_foreign_key_column' : mytable.c.sensor, 'sensor':relation(Sensor) }) > > > mapper(Sensor, sensor) > detectionmapper = mapper(Detection, detection, > allow_column_override= True , properties={ > 'sensor' : relation(Sensor), > }) > > I'm getting the following exception, however, when I actually create > a Detection with a Sensor and try to flush the session: > > Traceback (most recent call last): > File "<console>", line 1, in <module> > File "c:\python25\lib\site-packages\SQLAlchemy-0.4.5-py2.5.egg > \sqlalchemy\orm\scoping.py", line 98, in do > return getattr(self.registry(), name)(*args, **kwargs) > File "c:\python25\lib\site-packages\SQLAlchemy-0.4.5-py2.5.egg > \sqlalchemy\orm\session.py", line 757, in flush > self.uow.flush(self, objects) > File "c:\python25\lib\site-packages\SQLAlchemy-0.4.5-py2.5.egg > \sqlalchemy\orm\unitofwork.py", line 233, in flush > flush_context.execute() > File "c:\python25\lib\site-packages\SQLAlchemy-0.4.5-py2.5.egg > \sqlalchemy\orm\unitofwork.py", line 445, in execute > UOWExecutor().execute(self, tasks) > File "c:\python25\lib\site-packages\SQLAlchemy-0.4.5-py2.5.egg > \sqlalchemy\orm\unitofwork.py", line 930, in execute > self.execute_save_steps(trans, task) > File "c:\python25\lib\site-packages\SQLAlchemy-0.4.5-py2.5.egg > \sqlalchemy\orm\unitofwork.py", line 948, in execute_save_steps > self.execute_dependencies(trans, task, False) > File "c:\python25\lib\site-packages\SQLAlchemy-0.4.5-py2.5.egg > \sqlalchemy\orm\unitofwork.py", line 959, in execute_dependencies > self.execute_dependency(trans, dep, False) > File "c:\python25\lib\site-packages\SQLAlchemy-0.4.5-py2.5.egg > \sqlalchemy\orm\unitofwork.py", line 942, in execute_dependency > dep.execute(trans, isdelete) > File "c:\python25\lib\site-packages\SQLAlchemy-0.4.5-py2.5.egg > \sqlalchemy\orm\unitofwork.py", line 895, in execute > self.processor.process_dependencies(self.targettask, [elem.state > for elem in self.targettask.polymorphic_tosave_elements if elem > .state is not None], trans, delete=False) > File "c:\python25\lib\site-packages\SQLAlchemy-0.4.5-py2.5.egg > \sqlalchemy\orm\dependency.py", line 332, in process_dependencies > self._synchronize(state, child, None, False, uowcommit) > File "c:\python25\lib\site-packages\SQLAlchemy-0.4.5-py2.5.egg > \sqlalchemy\orm\dependency.py", line 374, in _synchronize > sync.populate(child, self.mapper, state, self.parent, > self.prop.synchronize_pairs) > File "c:\python25\lib\site-packages\SQLAlchemy-0.4.5-py2.5.egg > \sqlalchemy\orm\sync.py", line 27, in populate > self._raise_col_to_prop(True, source_mapper, l, dest_mapper, r) > NameError: global name 'self' is not defined > > > I am still using SQLAlchemy 0.4.5. > > Thanks for any help! > Chris > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---