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
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users