First of I apologize for (a) Not knowing Python all that well (< 2 months), (b) Not reading through the SQLAlchemy source, and (c) Not looking through the archives for the correct way to post example code. That said, here's what I think should be working that is not.
I have a table "gen_item" which contains a ForeignKey Reference to a code table "state_code". If I create an ORM instance with a mapper and change the instances foreign key column "state_id" the relation to the "state_code" table doesn't get updated and I can't find a method that might refresh its content. Here is a complete example as simple as I think I can get a full example. Just in case it gets eaten by the mail system here's a URL to the same code: http://www.sr.unh.edu/~rea/SQLAlchemy/testFKrelation.py from sqlalchemy import * class State(object): pass class GenItem(object): pass engine = create_engine('sqlite', {'filename':'testFKrelation.db'}) GenItem.t = Table('gen_item', engine, autoload=True) State.t = Table('state_code', engine, autoload=True) print dir(GenItem) if GenItem.t is None: print "Creating Tables" State.t = Table( # State Codes 'state_code', engine, Column('state_id', Integer, primary_key=True), Column('state_name', String(12)), redefine=True) State.t.create() State.t.insert().execute( {'state_id':0, 'state_name':'Have'}, {'state_id':1, 'state_name':'Need'}) GenItem.t = Table( # Generic Items 'gen_item', engine, Column('item_id', Integer, Sequence('s_item_id'), primary_key=True), Column('state_id', Integer, ForeignKey("state_code.state_id")), Column('item_name', String(30)), redefine=True) GenItem.t.create() GenItem.t.insert().execute( {'item_id':5, 'item_name':'Milk', 'state_id':0}, {'item_id':6, 'item_name':'Bread', 'state_id':1}) engine.commit() State.m = mapper(State, State.t) GenItem.m = mapper( GenItem, GenItem.t, order_by=GenItem.t.c.item_name, properties={ 'state':relation(State.m)}) milk = GenItem.m.get_by_item_id(5) print "I %s %s(state_id=%d)"%( milk.item_name, milk.state.state_name, milk.state_id) if milk.state_id: milk.state_id = 0 print "changed from Want to Have" else: milk.state_id = 1 print "changed from Have to Want" objectstore.commit() # If the above commit doesn't update the relation # something like objectstore.freshen(milk.state) would be helpful print "I %s %s(state_id=%d)"%( milk.item_name, milk.state.state_name, milk.state_id) -- -------------------------------------------------------------- Robert E. Anderson email: [EMAIL PROTECTED] Systems Programmer phone: (603) 862-3489 UNH Research Computing Center fax: (603) 862-1761 -------------------------------------------------------------- ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ Sqlalchemy-users mailing list Sqlalchemy-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users