Jean-Paul Calderone <exar...@divmod.com> added the comment: Some comments on tmp_dev_shelver.py...
Regarding SQLhash.__init__, it would be better to avoid relying on the "sqlite_master" table by using the CREATE TABLE IF NOT EXISTS form of table creation. Setting the isolation_level in __init__ will have essentially no effect on this code because there is currently no transaction management in the code. However, the rest of the code also has almost no effect, because there are no commits anywhere in SQLhash. All the data is always lost when the connection is closed. Regarding the XXX in SQLhash.__len__, there is no faster way using "sqlite_master". There is basically just one way to make COUNT(*) fast. Keep track of the count in the database (update it on inserts and deletes). Then, use that instead of using COUNT(*). Once there is some use of transactions, it will indeed be important, in DBhash.__setitem__, to make sure the delete and the insert are in the same transaction. Actually, a different approach would be better, though. INSERT OR REPLACE INTO will let you replace a row's value with one statement. It's also faster, since the row only has to be found once. Additionally, an index on the key column will assist performance substantially for large data sets. ---------- nosy: +exarkun _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue3783> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com