simonw / datasette-write

Datasette plugin providing a UI for executing SQL writes against the database
https://datasette.io/plugins/datasette-write
10 stars 2 forks source link
datasette-io datasette-plugin

datasette-write

PyPI Changelog Tests License

Datasette plugin providing a UI for writing to a database

Installation

Install this plugin in the same environment as Datasette.

pip install datasette-write

Usage

Having installed the plugin, visit /db/-/write on your Datasette instance to submit SQL queries that will be executed against a write connection to the specified database.

By default only the root user can access the page - so you'll need to run Datasette with the --root option and click on the link shown in the terminal to sign in and access the page.

The datasette-write permission governs access. You can use permission plugins such as datasette-permissions-sql to grant additional access to the write interface.

Pass ?sql=... in the query string to pre-populate the SQL editor with a query.

Parameterized queries

SQL queries can include parameters like this:

insert into news (title, body)
    values (:title, :body_textarea)

These will be converted into form fields on the /db/-/write page.

If a parameter name ends with _textarea it will be rendered as a multi-line textarea instead of a text input.

If a parameter name ends with _hidden it will be rendered as a hidden input.

Updating rows with SQL

On Datasette 1.0a13 and higher a row actions menu item will be added to the row page linking to a SQL query for updating that row, for users with the datasette-write permission.

Development

To set up this plugin locally, first checkout the code. Then create a new virtual environment:

cd datasette-write
python3 -mvenv venv
source venv/bin/activate

Or if you are using pipenv:

pipenv shell

Now install the dependencies and tests:

pip install -e '.[test]'

To run the tests:

pytest