LINUX.ORG.RU

sqlalchemy: транзакции


0

0

Я вот чего-то немного не понимаю механизм транзакций в 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. Нафига? В чем я туплю?

★★★★★

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.