My goal is to have a one-to-one relation defined using the same name
as the foreign key column underneath. I have 'contacts' table with
'created_by' and 'updated_by' columns which are FKs to contacts.id.

contacts = Table('contacts', meta,
    Column('id', Integer, primary_key=True),
    Column('first_name', String(25)),
    Column('middle_name', String(25)),
    Column('last_name', String(25)),
    # etc...
    Column('created_at', DateTime),
    Column('updated_at', DateTime),
    Column('created_by', Integer),
    Column('updated_by', Integer),
    ForeignKeyConstraint(['created_by'], ['contacts.id']),
    ForeignKeyConstraint(['updated_by'], ['contacts.id'])
)


mapper(Contact, contacts, properties={
        '_created_by': contacts.c.created_by,
        '_updated_by': contacts.c.updated_by,
        'created_by': relation(Contact,
primaryjoin=contacts.c.created_by==contacts.c.id, uselist=False),
        'updated_by': relation(Contact,
primaryjoin=contacts.c.updated_by==contacts.c.id, uselist=False),
    })

The primaryjoin is necessary due to the multiple FKs back to contacts.

This follows the pattern suggested here:
http://groups.google.pl/group/sqlalchemy/browse_thread/thread/e20bb32241ced699

No errors occur but the 'created_by' column in the table is not
actually updated upon flush/commit. Instead the _created_by attribute
is updated.


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