Я вот чего-то немного не понимаю механизм транзакций в sqlalchemy (база данных mysql).
In [1]: r = models.Role(code_name='foo3', verbose_name='bar1')
In [2]: db.session.save(r)
In [3]: db.session.rollback()
In [4]: db.session.close()
Все нормально, объект в базе не сохранился.
Если же я делаю так:
In [6]: r = models.Role(code_name='foo4', verbose_name='bar1')
In [7]: db.session.save(r)
In [8]: db.session.query(models.Role).all()
Out[8]:
[<database.schema.models.user.Role object at 0x19bbd90>,
<database.schema.models.user.Role object at 0x19bbe10>,
<database.schema.models.user.Role object at 0x19bbe90>,
<database.schema.models.user.Role object at 0x19bbf10>,
<database.schema.models.user.Role object at 0x1858210>]
In [9]: db.session.rollback()
То роллбек нифига назад не откатывает, объект в базе сохраняется. такое впечатление что db.session.query(models.Role).all() вызывает commit. Нафига? В чем я туплю?