# datasette-write
[![PyPI](https://img.shields.io/pypi/v/datasette-write.svg)](https://pypi.org/project/datasette-write/)
[![Changelog](https://img.shields.io/github/v/release/simonw/datasette-write?label=changelog)](https://github.com/simonw/datasette-write/releases)
[![Tests](https://github.com/simonw/datasette-write/workflows/Test/badge.svg)](https://github.com/simonw/datasette-write/actions?query=workflow%3ATest)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/simonw/datasette-write/blob/master/LICENSE)
Datasette plugin providing a UI for writing to a database
## Installation
Install this plugin in the same environment as Datasette.
```bash
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](https://github.com/simonw/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:
```sql
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:
```bash
cd datasette-write
python3 -mvenv venv
source venv/bin/activate
```
Or if you are using `pipenv`:
```bash
pipenv shell
```
Now install the dependencies and tests:
```bash
pip install -e '.[test]'
```
To run the tests:
```bash
pytest
```
Raw data
{
"_id": null,
"home_page": "https://github.com/simonw/datasette-write",
"name": "datasette-write",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "Simon Willison",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/a2/29/52216a9a0d16c4f8e188436b7fb66c08af7a553a6379091b306f01ac8303/datasette_write-0.4.tar.gz",
"platform": null,
"description": "# datasette-write\n\n[![PyPI](https://img.shields.io/pypi/v/datasette-write.svg)](https://pypi.org/project/datasette-write/)\n[![Changelog](https://img.shields.io/github/v/release/simonw/datasette-write?label=changelog)](https://github.com/simonw/datasette-write/releases)\n[![Tests](https://github.com/simonw/datasette-write/workflows/Test/badge.svg)](https://github.com/simonw/datasette-write/actions?query=workflow%3ATest)\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/simonw/datasette-write/blob/master/LICENSE)\n\nDatasette plugin providing a UI for writing to a database\n\n## Installation\n\nInstall this plugin in the same environment as Datasette.\n```bash\npip install datasette-write\n```\n## Usage\n\nHaving 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.\n\nBy 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.\n\nThe `datasette-write` permission governs access. You can use permission plugins such as [datasette-permissions-sql](https://github.com/simonw/datasette-permissions-sql) to grant additional access to the write interface.\n\nPass `?sql=...` in the query string to pre-populate the SQL editor with a query.\n\n## Parameterized queries\n\nSQL queries can include parameters like this:\n```sql\ninsert into news (title, body)\n values (:title, :body_textarea)\n```\nThese will be converted into form fields on the `/db/-/write` page.\n\nIf a parameter name ends with `_textarea` it will be rendered as a multi-line textarea instead of a text input.\n\nIf a parameter name ends with `_hidden` it will be rendered as a hidden input.\n\n## Updating rows with SQL\n\nOn 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.\n\n## Development\n\nTo set up this plugin locally, first checkout the code. Then create a new virtual environment:\n```bash\ncd datasette-write\npython3 -mvenv venv\nsource venv/bin/activate\n```\nOr if you are using `pipenv`:\n```bash\npipenv shell\n```\nNow install the dependencies and tests:\n```bash\npip install -e '.[test]'\n```\nTo run the tests:\n```bash\npytest\n```\n",
"bugtrack_url": null,
"license": "Apache License, Version 2.0",
"summary": "Datasette plugin providing a UI for writing to a database",
"version": "0.4",
"project_urls": {
"CI": "https://github.com/simonw/datasette-write/actions",
"Changelog": "https://github.com/simonw/datasette-write/releases",
"Homepage": "https://github.com/simonw/datasette-write",
"Issues": "https://github.com/simonw/datasette-write/issues"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3ad12dc625b79d8d21ae1066f0a5060a6ea84c1ef8073bc1dd4d03003962cdea",
"md5": "f043160c9261863ab89ee5777d47bdc0",
"sha256": "810b55b65cc0383d406fa6cd14a0f642280700cacddf683505f58c14f1928849"
},
"downloads": -1,
"filename": "datasette_write-0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f043160c9261863ab89ee5777d47bdc0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 7503,
"upload_time": "2024-09-04T04:50:15",
"upload_time_iso_8601": "2024-09-04T04:50:15.736517Z",
"url": "https://files.pythonhosted.org/packages/3a/d1/2dc625b79d8d21ae1066f0a5060a6ea84c1ef8073bc1dd4d03003962cdea/datasette_write-0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a22952216a9a0d16c4f8e188436b7fb66c08af7a553a6379091b306f01ac8303",
"md5": "b3fa9c2fd75cc386d31dcd3910934d69",
"sha256": "4b599b05950921b1bceb7a800583de9d7cf2b1071d642ba16fbb2df13d47f665"
},
"downloads": -1,
"filename": "datasette_write-0.4.tar.gz",
"has_sig": false,
"md5_digest": "b3fa9c2fd75cc386d31dcd3910934d69",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9795,
"upload_time": "2024-09-04T04:50:16",
"upload_time_iso_8601": "2024-09-04T04:50:16.933983Z",
"url": "https://files.pythonhosted.org/packages/a2/29/52216a9a0d16c4f8e188436b7fb66c08af7a553a6379091b306f01ac8303/datasette_write-0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-04 04:50:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "simonw",
"github_project": "datasette-write",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "datasette-write"
}