chaouche yacine wrote: > But how can I be sure that the city of New Jersey will be inserted before > the user in the database so that the new user row will get the proper city > id ?
SQLAlchemy takes care of that automatically once you configure the relationship between user and city using relation(). > > So I figured to rewrite the city helper function like this : > > def city(name): > theCity = City.query.filter_by(name=name).first() > if not theCity : > theCity = City(name=name) > session.commit() # to be sure it will be inserted before the user > return theCity if you did go this route (which you don't need to), you probably don't want to commit() in the middle of constructing your User object like that - the commit() should be held off until the full set of "related things" you're constructing have been all put in the database. that's why its called a "transaction". More appropriate would be flush() which ensures everything pending is issued to the current transaction. Once everything is inserted into the database the way you want, "commit" pushes the data out to the world, making that data available to other transactions. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=.
