SNIP >> I say this because your example implies that the Python wrapper starts >> the transaction automatically inside the execute, and I would not be >> surprised if it did so BEFORE executing the SQL parameter. >> > > The cursor() method that I call on the conn for the SELECT should give > me a separate transaction.
Are you certain the wrapper is behaving that way? As an experiment I altered my Ruby example to try to force it to go into an endless loop and failed (see below). My experiments seem to confirm that Sqlite is behaving as you expect, perhaps it is the wrapper which is not? John --------------------- require 'sqlite3' require 'erb' db = SQLite3::Database.new(':memory:') db.execute_batch(ERB.new(<<eof, nil, '<>').result(binding)) begin transaction; create table shelf ( key integer not null, value integer not null); insert into shelf values (1, 1); insert into shelf values (2, 2); insert into shelf values (3, 3); commit; eof SAFETY = 10 count = 0 db.transaction { db.execute('select key from shelf order by rowid').each do |i| db.execute('replace into shelf (key, value) values(?,?)', i, i) count += 1 abort if count == SAFETY end } puts db.execute('select * from shelf') puts 'done' 1 1 2 2 3 3 1 1 2 2 3 3 done _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users