Enable downloading mutable databases.
Install this plugin in the same environment as Datasette.
datasette install datasette-mutable-downloads
You can now download a mutable database on its database page, just as you can for immutable databases.
Example: https://dux.fly.dev/cooking
This is achieved by a somewhat gross monkeypatch of the DatabaseDownload
view.
We detect if the database is mutable. If it is, we first create a copy via
VACUUM INTO
.
We then stream that file to the user, and delete it.
This requires SQLite 3.27.0 or newer (Feb 2019).
NOTE
The act of
VACUUM INTO
could be resource intensive if your database is large. If you expose your Datasette to the Internet, you may wish to restrict this to only authenticated users.To do that, add a permissions block in your metadata.json:
"permissions": { "view-database-download": { "gh_id": "*" } }
To set up this plugin locally, first checkout the code. Then create a new virtual environment:
cd datasette-mutable-downloads
python3 -m venv venv
source venv/bin/activate
Now install the dependencies and test dependencies:
pip install -e '.[test]'
To run the tests:
pytest