session.begin()
try:
1/0
except:
session.rollback()
log.err()
else:
session.commit()
session.close()
тогда уж лучше так:

session.begin()
try:
...
except Exception:
session.rollback()
log.err()

except BaseException:
session.rollback()
session.close()
log.err()
raise
else:
session.commit()
session.close()
или покороче:
session.begin()
try:
...
except BaseException, exobj:
session.rollback()
log.err()

if not isinstance(exobj, Exception):
session.close()
raise
else:
session.commit()
session.close()