Hi, for some reason the following program will loop forever: #!/usr/bin/env python
import sqlite3 conn = sqlite3.connect(':memory:') conn.text_factory = bytes conn.execute('CREATE TABLE shelf (key INTEGER NOT NULL, value INTEGER NOT NULL)') for i in xrange(3): conn.execute('INSERT INTO shelf (key, value) VALUES (?,?)', (i, i)) conn.commit() for i in (str(row[0]) for row in conn.cursor().execute('SELECT key FROM shelf ORDER BY ROWID')): conn.execute('REPLACE INTO shelf (key, value) VALUES (?,?)', (i, i)) conn.commit() print i Anybody understand why? I thought the REPLACE and SELECT transactions should be (snapshot) isolated from each other, so why does the SELECT keep getting updated rows from the REPLACE? Any way to solve this problem? So far all I've found are commands that can change the connection-level isolation/locking, but not the cursor-level (transaction-level) isolation. Thanks in advance for any answers! -- Yang Zhang http://www.mit.edu/~y_z/ _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users