The following code fails on the last assert statement (SQLAlchemy
0.4.1):
--->8---
from __future__ import with_statement
import sqlalchemy as sa, logging
from sqlalchemy.orm import mapper, sessionmaker
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
logging.basicConfig()
class ModelObject(object):
def __init__(self, title):
self.title = title
metadata = sa.MetaData()
objectTable = sa.Table(
'Objects', metadata,
sa.Column('id', sa.Integer, primary_key=True, autoincrement=True),
sa.Column('title', sa.String(255), nullable=False),
)
objectsMapper = mapper(ModelObject, objectTable)
engine = sa.create_engine('sqlite://')
metadata.create_all(engine, checkfirst=True)
session = sessionmaker(bind=engine, autoflush=False,
transactional=False)()
obj1 = ModelObject(u'title-1.1')
with session.begin():
session.save(obj1)
# No session.flush() here. Is it OK? At least we did something to
save it.
obj1ID = obj1.id
session.clear()
obj1 = session.get(objectsMapper, obj1ID)
assert obj1.title==u'title-1.1'
obj1.title = u'title-1.2' # It's not intended to be saved
obj2 = ModelObject(u'title-2')
with session.begin():
session.save(obj2)
obj2ID = obj2.id
session.clear()
obj2 = session.get(objectsMapper, obj2ID)
assert obj2.title==u'title-2'
obj1 = session.get(objectsMapper, obj1ID)
assert not session.autoflush
assert obj1.title==u'title-1.1' # But we didn't save/flush it!
--->8---
All modified objects are saved for each transaction and I see no way
to control this. Am I right? There is a lot of cases when such
behavior in unacceptable. Is it intended or a bug?
--~--~---------~--~----~------------~-------~--~----~
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=en
-~----------~----~----~----~------~----~------~--~---