"I just use the default .connect() without specifying isolation_level explicitly. Then I am in a transaction?" Errrr, ummmmmm, wellllll. Even regular users may not know the answer to that do to "automatic stuff behind the scenes" which may have corner cases or maybe bad documentation. Which is why we prefer to use the "isolation_level = None" at connection time to be absolutely sure. If you don't want to deal with that you can always just run .commit() anyway just to make sure. If you weren't in a transaction it won't complain, and you'll be sure to be no longer in a transaction immediately afterwards.
"Is there any .commit() implied in the SELECT statement?" Nope. "So I should close the `conn` immediately after `c.fetchall()` to release resources used by sqlite3?" If you're done reading from the database then it never hurts. If you're gonna go back and do more queries then you can keep the connection live which will keep things cached. Just don't be in a transaction or you'll be blocking anyone else trying to write. If you're the only one ever using that file then all this is a moot point though as there's no one else to block. "In the above example, should I use WAL mode or not?" If you're just getting started with SQLite then probably don't worry about it for now, especially if everything is working fine with the default mode. You can look at it later for fun. https://www.sqlite.org/wal.html _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users