Roger Binns
Mon, 18 May 2009 02:18:31 -0700
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Yang Zhang wrote:
> for i in (str(row[0]) for row in conn.cursor().execute('SELECT key FROM
> shelf ORDER BY ROWID')):
You are converting the key which is an integer into a string for no apparent reason. If you also ask for the ROWID you will see that what is happening is a new rowid is generated for the replaced row so that if you are iterating over the table while modifying it then you effectively have an infinite length table. > Any way to solve this problem? You currently have the SELECT results being read back one at a time (lazily) on each iteration of the for loop. The simplest solution is to read them all in first. Add .fetchall() after the execute. Roger -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAkoRJ9kACgkQmOOfHg372QT/JgCfRImM5e85JCgn3bmp45zGm6j6 uQMAn11x9OfWdBUMwq/6zZdvSCSuGGGS =ABo+ -----END PGP SIGNATURE----- _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users