Do you know the default isolation level of the transactions used in Django? Is it possible to set the isolation level in the database independent way?
I'm mainly interested in mysql and postgres.
You can also change this per client / session using the django database options, like this:
DATABASE_OPTIONS = { "init_command": "SET storage_engine=INNODB, SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED", }
The isolation level isn't changed by mysql drivers so it depends on the server's default isolation level.
At the moment django does not set the isolation level. This is a bug, because of django does not work properly with any higher isolation level than READ COMMITTED. But MySQL is using REPEATABLE READ by default. There are plans to add a setting to set the isolation level (#14026) and a discussion about making READ COMMITTED the default (#13906). I have also written a detailed article about MySQL transactions and django.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With