On Thu, 23 Jan 2014 16:30:57 +0000, "Joseph L. Casale" <jcas...@activenetwerx.com> wrote:
>I have a scenario where I am writing a series of entries across several tables >with relationships using Python and context managers. The sql is abstracted >away from the user by a class providing all the needed methods. These each >open implicit transactions, now its been asked that during the bulk loading >process, we wrap it all up in a transaction so nothing will be committed in >the event of some problem during the load. > >This presents a problem as far as I know, aside from extending the schema >with a table to indicate state that is updated upon completion, is there >anything >about transactions I am not seeing where I can accomplish leaving the bulk >load uncommitted in the event of an issue in my case? Start the bulk load with "BEGIN IMMEDIATE;" or "BEGIN EXCLUSIVE;" and count errors. If there were no errors at the end of the bulk load, issue "COMMIT;", else issue "ROLLBACK". If the program crashes, sqlite will take care of the rollback automatically the next time any process opens the database. http://sqlite.org/c3ref/get_autocommit.html can help you decide what mode you are in. By the way, autocommit is not the best thing to do if you have related insert/update/delete statements in an application transaction. Related updates should be in the same, atomic, transaction. >Thanks, >jlc -- Groet, Cordialement, Pozdrawiam, Regards, Kees Nuyt _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users