I still have a hard time to understand what the difference is
according to the python manual. It keeps saying see somewhere else in
the python manual. But I don't see where it explains the differences
between the differences comprehensively and clearly.

https://www.sqlite.org/lang_transaction.html

On the above page, I only see

- BEGIN
- BEGIN DEFERRED
- BEGIN IMMEDIATE
- BEGIN EXCLUSIVE

, where BEGIN is just BEGIN DEFERRED.

But what is isolation_level = None?

https://docs.python.org/3.8/library/sqlite3.html#sqlite3-controlling-transactions

"The underlying sqlite3 library operates in autocommit mode by
default, but the Python sqlite3 module by default does not."

According to the above, since isolation_level="" is the default in
python, so it is not autocommit and it is BEGIN.

But what is autocommit mode? The following doesn't provide a
definition. Is there a definition on sqlite.com website?

https://www.sqlite.org/c3ref/get_autocommit.html

> The default is an empty string (ie, '').  It can take the value None, '',
> 'DEFERRED', 'IMMEDIATE', 'EXCLUSIVE' and the value (if not None) is appended
> to the BEGIN when a magical transaction is started, and if None, then you
> are indicating that you will be using manual transaction control
>
> isolation_level   command
> None              None
> '' (default)      BEGIN
> 'DEFERRED'        BEGIN DEFERRED
> 'IMMEDIATE'       BEGIN IMMEDIATE
> 'EXCLUSIVE'       BEGIN EXCLUSIVE
>
> You can set the isolation_level in the connect call (the default is '') or
> read/change it with the .isolation_level property of a connection object.

-- 
Regards,
Peng
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to