Hi, all

the followings are the code snippet

from sqlalchemy import *
meta = MetaData('sqlite://')

parent = Table('parent', meta,
        Column('id', Integer, primary_key=True),
        Column('name', Integer)
)

child = Table('child', meta,
        Column('id', Integer, primary_key=True),
        Column('current_id', Integer),
        Column('parent_id', Integer),
        ForeignKeyConstraint(['parent_id'],['parent.id'],
ondelete="CASCADE"),
        ForeignKeyConstraint(['current_id'],['child.id']), )

class Parent(object):
       pass

class Child(object):
       pass

mapper(Parent, parent);

mapper(Child, child,
    properties = { 'parent' : relation(Parent,
                                        primaryjoin =
(child.c.parent_id == parent.c.id) &
                                        (child.c.current_id ==
child.c.id),
                        backref = "child"),
                        'current' : relation(Child,
                        primaryjoin = child.c.current_id ==
child.c.id)
})

meta.create_all()

s = create_session()
c = Child()
c.parent = Parent()
s.save(c)
s.flush()
s.clear()

running that resulted in

Traceback (most recent call last):
  File "C:\powerforce\test_fk_relation.py", line 39, in <module>
    s.flush()
  File "C:\Python25\lib\site-packages\sqlalchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\session.py", line 320, in flush
    self.uow.flush(self, objects)
  File "C:\Python25\lib\site-packages\sqlalchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\unitofwork.py", line 210, in flush
    flush_context.execute()
  File "C:\Python25\lib\site-packages\sqlalchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\unitofwork.py", line 400, in execute
    UOWExecutor().execute(self, head)
  File "C:\Python25\lib\site-packages\sqlalchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1018, in execute
    self.execute_save_steps(trans, task)
  File "C:\Python25\lib\site-packages\sqlalchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1035, in
execute_save_steps
    self.execute_dependencies(trans, task, False)
  File "C:\Python25\lib\site-packages\sqlalchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1048, in
execute_dependencies
    self.execute_dependency(trans, dep, False)
  File "C:\Python25\lib\site-packages\sqlalchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1029, in
execute_dependency
    dep.execute(trans, isdelete)
  File "C:\Python25\lib\site-packages\sqlalchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\unitofwork.py", line 984, in execute
    self.processor.process_dependencies(self.targettask, [elem.obj for
elem in self.targettask.polymorphic_tosave_elements if elem.obj is not
None], trans, delete=False)
  File "C:\Python25\lib\site-packages\sqlalchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\dependency.py", line 275, in
process_dependencies
    self._synchronize(obj, child, None, False, uowcommit)
  File "C:\Python25\lib\site-packages\sqlalchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\dependency.py", line 310, in _synchronize
    self.syncrules.execute(source, dest, obj, child, clearkeys)
  File "C:\Python25\lib\site-packages\sqlalchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\sync.py", line 92, in execute
    rule.execute(source, dest, obj, child, clearkeys)
  File "C:\Python25\lib\site-packages\sqlalchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\sync.py", line 135, in execute
    value = self.source_mapper.get_attr_by_column(source,
self.source_column)
  File "C:\Python25\lib\site-packages\SQLAlchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\mapper.py", line 1017, in get_attr_by_column
    prop = self._getpropbycolumn(column, raiseerror)
  File "C:\Python25\lib\site-packages\SQLAlchemy-0.3.11dev_r3181-
py2.5.egg\sqlalchemy\orm\mapper.py", line 1007, in _getpropbycolumn
    raise exceptions.InvalidRequestError("Column '%s.%s' is not
available, due to conflicting property '%s':%s" % (column.table.name,
column.name, column.key, repr(prop)))
sqlalchemy.exceptions.InvalidRequestError: Column 'child.id' is not
available, d
ue to conflicting property
'id':<sqlalchemy.orm.properties.ColumnProperty object at 0x016FB730>

If I had renamed the id column on child to '_id', I ended up with a
different error no child.id column configured on the maper Parent|
parent|

any clues?

Thanks in advance

Lei


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to