>
> >> session.begin_nested()
> >> try:
> >>     ...
> >>     session.flush()
> >>     session.commit()
> >> except:
> >>    session.rollback()
>

Say I have this:

session().begin_nested()
try:
    session.add(obj)
    session.flush()
    session.commit()
except:
    session.rollback()
...
transaction.commit()

2 questions:

 * I assume that the session.rollback() undoes the add(obj) - obj is
again transient?

Also, this seems to give me the behavior I'd like, except that the
session.commit() pukes due to zope, saying:

"""
  File "/home/rarch/tg2env/lib/python2.6/site-packages/
zope.sqlalchemy-0.4-py2.6.egg/zope/sqlalchemy/datamanager.py", line
201, in before_commit
    assert zope_transaction.get().status == 'Committing', "Transaction
must be committed using the transaction manager"
AssertionError: Transaction must be committed using the transaction
manager.
"""

Later, the transaction.commit() seems to free the savepoint:

>>> transaction.commit()
13:41:41,039 INFO  [sqlalchemy.engine.base.Engine.0x...2c10] RELEASE
SAVEPOINT sa_savepoint_2
13:41:41,039 INFO  [sqlalchemy.engine.base.Engine.0x...2c10] {}
13:41:41,040 INFO  [sqlalchemy.engine.base.Engine.0x...2c10] COMMIT
>>>

However, by then I'll have hundreds/thousands of savepoints to release
since this is being called as part of data-takeon.  I'd rather not
take up thousands of savepoint resources when I only need one.

So the second question(s) is:
 * Is there a way besides session.commit() to free the savepoint
resource?  Is there a way to provide the savepoint name, so I can use
the same name over?  Lastly, if you aren't the expert, where would you
point me, zope group or TG group?

Thanks in advance.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to