Sorry, I forgot to add that the mappers A and B must have a relation() specified in order for unit of work to determine the order of operations. this has always been the case in all versions. illustrated in the attached script.
--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
from sqlalchemy import * from sqlalchemy.orm import * engine = create_engine('sqlite://', echo=True) metadata = MetaData(engine) engine.execute(""" CREATE TABLE A ( x INTEGER PRIMARY KEY )""") engine.execute("""CREATE TABLE B ( y INTEGER PRIMARY KEY REFERENCES A(x) ) """) tableA = Table('A', metadata, autoload=True) tableB = Table('B', metadata, autoload=True) class A(object): def __init__(self, x): self.x = x class B(object): def __init__(self, y): self.y = y mapper(A, tableA, properties={ 'b':relation(B) }) sess = create_session() mapper(B, tableB) a = A(x=10) sess.save(a) b = B(y=10) sess.save(b) sess.flush()
On Nov 9, 2007, at 10:42 AM, Manlio Perillo wrote: > > Hi. > > It seems that from SQLAlchemy 0.3.7(?) the unit of work, after a > flush, > executes the SQL operations in a different order. > > As an example, assuming this schema > > CREATE TABLE A ( > x INTEGER PRIMARY KEY > ); > > CREATE TABLE B ( > y INTEGER PRIMARY KEY REFERENCES A(x) > ); > > > in 0.36 I can execute, in a session transaction: > a = A(x=10) > sess.save(a) > > b = B(x=10) > sess.save(b) > > sess.flush() > > > This no longer works on 0.3.10, where I need to do a flush after `a` > creation. > > > > Is this a feature? > Is it possible to force the unit of work to execute queries in the > right > order, in order to avoid an intermediate flush? > > > > Thanks Manlio Perillo > > --~--~---------~--~----~------------~-------~--~----~ > 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 > -~----------~----~----~----~------~----~------~--~--- >