我试着做这样的事情:
with transaction.atomic(): Model.objects.create(name="something") raise Exception
字符串由于引发了异常,这应该意味着事务应该回滚,并且名称为“something”的Model不应该存在。但是,如果我查询Model.objects.get(name="something"),对象仍然存在于数据库中。我是否没有正确理解交易?
Model.objects.get(name="something")
lnxxn5zx1#
我最近遇到了同样的问题,在我的情况下,这是因为我正在写入与"default"不同的数据库。我有一个自定义的数据库路由器,它根据请求选择数据库,但读和写都发生在同一个数据库上。
"default"
在django文档中,必须通过向using块提供using="database_alias"来指定数据库:
using="database_alias"
database_alias = ... # Get the database alias by using the same logic as in the router with transaction.atomic(using=database_alias): Model.objects.create(name="something") raise Exception
字符串
1条答案
按热度按时间lnxxn5zx1#
我最近遇到了同样的问题,在我的情况下,这是因为我正在写入与
"default"
不同的数据库。我有一个自定义的数据库路由器,它根据请求选择数据库,但读和写都发生在同一个数据库上。在django文档中,必须通过向using块提供
using="database_alias"
来指定数据库:字符串