Ok I found the solution, just move the first query into the transaction body:
import transaction try: transaction.begin() x_members = session.query(Distributor)... for member in x_members: ..... except: transaction.abort() BTW, I'm using pyramid framework, which is using the following statement to init the session: DBSession = scoped_session(sessionmaker( extension=ZopeTransactionExtension())) -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To view this discussion on the web visit https://groups.google.com/d/msg/sqlalchemy/-/DAKuaGyKwM8J. To post to this group, send email to sqlalchemy@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.