{"rowid": 107914493, "repo": "https://github.com/simonw/datasette", "release": "https://github.com/simonw/datasette/releases/tag/0.55", "date": "2021-02-19", "body_markdown": "Support for cross-database SQL queries and built-in support for serving via HTTPS.\r\n\r\n- The new `--crossdb` command-line option causes Datasette to attach up to ten database files to the same `/_memory` database connection. This enables cross-database SQL queries, including the ability to use joins and unions to combine data from tables that exist in different database files. See [Cross-database queries](https://docs.datasette.io/en/stable/sql_queries.html#cross-database-queries) for details. ([#283](https://github.com/simonw/datasette/issues/283))\r\n- `--ssl-keyfile` and `--ssl-certfile` options can be used to specify a TLS certificate, allowing Datasette to serve traffic over `https://` without needing to run it behind a separate proxy. ([#1221](https://github.com/simonw/datasette/issues/1221))\r\n- The `/:memory:` page has been renamed (and redirected) to `/_memory` for consistency with the new `/_internal` database introduced in Datasette 0.54. ([#1205](https://github.com/simonw/datasette/issues/1205))\r\n- Added plugin testing documentation on [Using pdb for errors thrown inside Datasette](https://docs.datasette.io/en/stable//testing_plugins.html#testing-plugins-pdb). ([#1207](https://github.com/simonw/datasette/issues/1207))\r\n- The [official Datasette Docker image](https://hub.docker.com/r/datasetteproject/datasette) now uses Python 3.7.10, applying [the latest security fix](https://www.python.org/downloads/release/python-3710/) for that Python version. ([#1235](https://github.com/simonw/datasette/issues/1235))", "published_at": "2021-02-19T02:02:29Z", "topics": "[\"asgi\", \"automatic-api\", \"csv\", \"datasets\", \"datasette\", \"datasette-io\", \"docker\", \"json\", \"python\", \"sql\", \"sqlite\"]"} {"rowid": 140912432, "repo": "https://github.com/simonw/sqlite-utils", "release": "https://github.com/simonw/sqlite-utils/releases/tag/3.5", "date": "2021-02-14", "body_markdown": "- `sqlite-utils insert --sniff` option for detecting the delimiter and quote character used by a CSV file, see [Alternative delimiters and quote characters](https://sqlite-utils.datasette.io/en/stable/cli.html#cli-insert-csv-tsv-delimiter). ([#230](https://github.com/simonw/sqlite-utils/issues/230))\r\n- The `table.rows_where()`, `table.search()` and `table.search_sql()` methods all now take optional `offset=` and `limit=` arguments. ([#231](https://github.com/simonw/sqlite-utils/issues/231))\r\n- New `--no-headers` option for `sqlite-utils insert --csv` to handle CSV files that are missing the header row, see [CSV files without a header row](https://sqlite-utils.datasette.io/en/stable/cli.html#cli-insert-csv-tsv-no-header). ([#228](https://github.com/simonw/sqlite-utils/issues/228))\r\n- Fixed bug where inserting data with extra columns in subsequent chunks would throw an error. Thanks [@nieuwenhoven](https://github.com/nieuwenhoven) for the fix. ([#234](https://github.com/simonw/sqlite-utils/issues/234))\r\n- Fixed bug importing CSV files with columns containing more than 128KB of data. ([#229](https://github.com/simonw/sqlite-utils/issues/229))\r\n- Test suite now runs in CI against Ubuntu, macOS and Windows. Thanks [@nieuwenhoven](https://github.com/nieuwenhoven) for the Windows test fixes. ([#232](https://github.com/simonw/sqlite-utils/issues/232))", "published_at": "2021-02-14T22:44:21Z", "topics": "[\"cli\", \"click\", \"datasette\", \"datasette-io\", \"datasette-tool\", \"python\", \"sqlite\", \"sqlite-database\"]"} {"rowid": 303218369, "repo": "https://github.com/dogsheep/evernote-to-sqlite", "release": "https://github.com/dogsheep/evernote-to-sqlite/releases/tag/0.3.1", "date": "2021-02-11", "body_markdown": "- Explicitly open file using utf-8 encoding - thanks, RiverZhou. [#10](https://github.com/dogsheep/evernote-to-sqlite/pull/10)\r\n- Fix import error if note has no \"updated\" element - thanks, Matej Korosec. [#8](https://github.com/dogsheep/evernote-to-sqlite/pull/8)\r\n", "published_at": "2021-02-11T22:40:40Z", "topics": "[\"datasette-io\", \"datasette-tool\", \"dogsheep\", \"evernote\", \"sqlite\"]"} {"rowid": 303218369, "repo": "https://github.com/dogsheep/evernote-to-sqlite", "release": "https://github.com/dogsheep/evernote-to-sqlite/releases/tag/0.3", "date": "2021-02-11", "body_markdown": "- Correctly handle entities in XHTML notes. [#9](https://github.com/dogsheep/evernote-to-sqlite/issues/9)\r\n- Fixed a bug importing ENEX files on Windows. Thanks, [dskrad](https://github.com/dskrad). [#11](https://github.com/dogsheep/evernote-to-sqlite/issues/11)\r\n", "published_at": "2021-02-11T22:16:20Z", "topics": "[\"datasette-io\", \"datasette-tool\", \"dogsheep\", \"evernote\", \"sqlite\"]"} {"rowid": 140912432, "repo": "https://github.com/simonw/sqlite-utils", "release": "https://github.com/simonw/sqlite-utils/releases/tag/3.4.1", "date": "2021-02-06", "body_markdown": "- Fixed a code import bug that slipped in to 3.4. ([#226](https://github.com/simonw/sqlite-utils/issues/226))", "published_at": "2021-02-06T02:11:15Z", "topics": "[\"cli\", \"click\", \"datasette\", \"datasette-io\", \"datasette-tool\", \"python\", \"sqlite\", \"sqlite-database\"]"} {"rowid": 140912432, "repo": "https://github.com/simonw/sqlite-utils", "release": "https://github.com/simonw/sqlite-utils/releases/tag/3.4", "date": "2021-02-06", "body_markdown": "- `sqlite-utils insert --csv` now accepts optional `--delimiter` and `--quotechar` options. See [Alternative delimiters and quote characters](https://sqlite-utils.datasette.io/en/stable/cli.html#cli-insert-csv-tsv-delimiter). ([#223](https://github.com/simonw/sqlite-utils/issues/223))", "published_at": "2021-02-06T01:38:26Z", "topics": "[\"cli\", \"click\", \"datasette\", \"datasette-io\", \"datasette-tool\", \"python\", \"sqlite\", \"sqlite-database\"]"} {"rowid": 107914493, "repo": "https://github.com/simonw/datasette", "release": "https://github.com/simonw/datasette/releases/tag/0.54.1", "date": "2021-02-02", "body_markdown": "- Fixed a bug where `?_search=` and `?_sort=` parameters were incorrectly duplicated when the filter form on the table page was re-submitted. ([#1214](https://github.com/simonw/datasette/issues/1214))", "published_at": "2021-02-02T21:30:12Z", "topics": "[\"asgi\", \"automatic-api\", \"csv\", \"datasets\", \"datasette\", \"datasette-io\", \"docker\", \"json\", \"python\", \"sql\", \"sqlite\"]"} {"rowid": 107914493, "repo": "https://github.com/simonw/datasette", "release": "https://github.com/simonw/datasette/releases/tag/0.54", "date": "2021-01-25", "body_markdown": "The two big new features in this release are the `_internal` SQLite in-memory database storing details of all connected databases and tables, and support for JavaScript modules in plugins and additional scripts.\r\n\r\nFor additional commentary on this release, see [Datasette 0.54, the annotated release notes](https://simonwillison.net/2021/Jan/25/datasette/).\r\n\r\n### The _internal database\r\n\r\nAs part of ongoing work to help Datasette handle much larger numbers of connected databases and tables (see [Datasette Library](https://github.com/simonw/datasette/issues/417)) Datasette now maintains an in-memory SQLite database with details of all of the attached databases, tables, columns, indexes and foreign keys. ([#1150](https://github.com/simonw/datasette/issues/1150))\r\n\r\nThis will support future improvements such as a searchable, paginated homepage of all available tables.\r\n\r\nYou can explore an example of this database by [signing in as root](https://latest.datasette.io/login-as-root) to the `latest.datasette.io` demo instance and then navigating to [latest.datasette.io/_internal](https://latest.datasette.io/_internal).\r\n\r\nPlugins can use these tables to introspect attached data in an efficient way. Plugin authors should note that this is not yet considered a stable interface, so any plugins that use this may need to make changes prior to Datasette 1.0 if the `_internal` table schemas change.\r\n\r\n### Named in-memory database support\r\n\r\nAs part of the work building the `_internal` database, Datasette now supports named in-memory databases that can be shared across multiple connections. This allows plugins to create in-memory databases which will persist data for the lifetime of the Datasette server process. ([#1151](https://github.com/simonw/datasette/issues/1151))\r\n\r\nThe new `memory_name=` parameter to the [Database class](https://docs.datasette.io/en/stable/internals.html#internals-database) can be used to create named, shared in-memory databases.\r\n\r\n### JavaScript modules\r\n\r\n[JavaScript modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules) were introduced in ECMAScript 2015 and provide native browser support for the `import` and `export` keywords.\r\n\r\nTo use modules, JavaScript needs to be included in `