Gelin Yan wrote:
>> In Process A
>>
>>      insert a value into a table XX and commit.
>>
>> In Process B
>>
>>      select from the same table XX
>>
>>    and I didn't find the inserted record.
>
>    I used python & its sqlite3 module for this trial, the autocommit mode
> is default on. After I explicitly called "BEGIN" & "COMMIT" for selecting
> record, I could see the inserted record.

If you have not explicitly called BEGIN, SQLite automatically wraps each
statement in a transaction.  So in theory, the behaviour with and without
BEGIN/COMMIT should be the same.

Python tries to be clever and automatically makes hidden calls to BEGIN/
COMMIT before certain SQL statements.  (It's broken: the DML/DDL
detection does not work correctly in a lot of corner cases.)

The autocommit mode (which disables Python's braindamage) is _not_
enabled by default, and the behaviour of the database shows that it is
indeed not enabled.  So I guess you have to enable it explicitly (for
every connection object):
<https://docs.python.org/2/library/sqlite3.html#sqlite3-controlling-transactions>


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

Reply via email to