While migrating I came across the following sequence of actions, I had
some old code that called session.close() elsewhere in the application
and also I tend to use sqlalchemy as a temporary object cache knowing
this is somewhat discouraged.
Anyway is it correct that nothing happens when calling that
session.delete(user) ??

import sqlalchemy as sqa
import sqlalchemy.orm as sqorm

class User(object): pass

dsn = """sqlite:///"""
engine = sqa.create_engine(dsn)
engine.echo = True

md = sqa.MetaData()
md.bind = engine

users = sqa.Table('users', md,
    sqa.Column('id', sqa.Integer, primary_key=True),
    sqa.Column('name', sqa.String),
    sqa.Column('email', sqa.String))

users.mapper = sqorm.mapper(User, users)

Session = sqorm.sessionmaker(bind=engine, autocommit=True)

if __name__ == "__main__":

    session = Session()
    users.create()

    session.begin()

    user = User()
    user.name='test'
    user.email='[EMAIL PROTECTED]'

    session.add(user)

    session.flush()
    session.commit()

    #accidentally call close.
    session.close()

    #try to delete the cached user, nothing appens
    session.begin()
    session.delete(user)
    session.flush()
    session.commit()

    #the user is still there
    users = session.query(User).all()
    for user in users:
        print user.name, user.email

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

Reply via email to