html_url,id,node_id,tag_name,target_commitish,name,draft,author,prerelease,created_at,published_at,body,repo,reactions https://github.com/simonw/sqlite-utils/releases/tag/3.2,35930040,MDc6UmVsZWFzZTM1OTMwMDQw,3.2,main,3.2,0,9599,0,2021-01-03T21:15:26Z,2021-01-03T21:17:37Z,"This release introduces a new mechanism for speeding up `count(*)` queries using cached table counts, stored in a `_counts` table and updated by triggers. This mechanism is described in [Cached table counts using triggers](https://sqlite-utils.datasette.io/en/stable/python-api.html#python-api-cached-table-counts), and can be enabled using Python API methods or the new `enable-counts` CLI command. ([#212](https://github.com/simonw/sqlite-utils/issues/212)) - `table.enable_counts()` method for enabling these triggers on a specific table. - `db.enable_counts()` method for enabling triggers on every table in the database. ([#213](https://github.com/simonw/sqlite-utils/issues/213)) - New `sqlite-utils enable-counts my.db` command for enabling counts on all or specific tables, see [Enabling cached counts](https://sqlite-utils.datasette.io/en/stable/cli.html#cli-enable-counts). ([#214](https://github.com/simonw/sqlite-utils/issues/214)) - New `sqlite-utils triggers` command for listing the triggers defined for a database or specific tables, see [Listing triggers](https://sqlite-utils.datasette.io/en/stable/cli.html#cli-triggers). ([#218](https://github.com/simonw/sqlite-utils/issues/218)) - New `db.use_counts_table` property which, if `True`, causes `table.count` to read from the `_counts` table. ([#215](https://github.com/simonw/sqlite-utils/issues/215)) - `table.has_counts_triggers` property revealing if a table has been configured with the new `_counts` database triggers. - `db.reset_counts()` method and `sqlite-utils reset-counts` command for resetting the values in the `_counts` table. ([#219](https://github.com/simonw/sqlite-utils/issues/219)) - The previously undocumented `db.escape()` method has been renamed to `db.quote()` and is now covered by the documentation: [Quoting strings for use in SQL](https://sqlite-utils.datasette.io/en/stable/python-api.html#python-api-quote). ([#217](https://github.com/simonw/sqlite-utils/issues/217)) - New `table.triggers_dict` and `db.triggers_dict` introspection properties. ([#211](https://github.com/simonw/sqlite-utils/issues/211), [#216](https://github.com/simonw/sqlite-utils/issues/216)) - `sqlite-utils insert` now shows a more useful error message for invalid JSON. ([#206](https://github.com/simonw/sqlite-utils/issues/206))",140912432,