Enable a limited form of table-valued functions.
Project description
datasette-ersatz-table-valued-functions
ersatz (adj.): made or used as a substitute, typically an inferior one, for something else.
Enable a limited form of table-valued functions.
See also ersatz-table-valued-functions.
Installation
Install this plugin in the same environment as Datasette.
datasette install datasette-ersatz-table-valued-functions
Usage
Write a plugin that registers a table-valued function in the startup hook:
from datasette import hookimpl
from datasette_ersatz_table_valued_functions import create_table_function
def tbl_squares(n):
return [(i, i*i) for i in range(n)]
@hookimpl
def startup():
create_table_function('tbl_squares', 1, tbl_squares, ['root', 'square'])
You can then query this in Datasette:
SELECT root FROM tbl_squares(10) WHERE square % 2 = 0 AND square < 50
will emit 0, 2, 4, 6.
The parameters to the function can come from a subselect, which could target any table and be arbitrarily complex:
SELECT root FROM tbl_squares((SELECT 10))
You can do whatever with the output of this function -- join it, aggregate it, etc.
What you can't do is use a join as the source of input to the function:
WITH xs AS (SELECT 10 AS x) SELECT root FROM tbl_squares(x), xs
Queries that aren't supported are passed as-is to SQLite, which will itself then reject them since no such table function is registered.
Development
To set up this plugin locally, first checkout the code. Then create a new virtual environment:
cd datasette-ersatz-table-valued-functions
python3 -m venv venv
source venv/bin/activate
Now install the dependencies and test dependencies:
pip install -e '.[test]'
To run the tests:
pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file datasette-ersatz-table-valued-functions-0.2.tar.gz.
File metadata
- Download URL: datasette-ersatz-table-valued-functions-0.2.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc89271db3a7b15d9bee060a48b6a6defa84e4f5e6f6d0aaed20eca46c67ce54
|
|
| MD5 |
f609c168a5cb6fc073906c17930fd6c8
|
|
| BLAKE2b-256 |
a7a19a71dade6322cb7910604ee4695848134fb196542b6669a5ecbe61278a7f
|
File details
Details for the file datasette_ersatz_table_valued_functions-0.2-py3-none-any.whl.
File metadata
- Download URL: datasette_ersatz_table_valued_functions-0.2-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb821827c6cfb546aa8c32fda507d582319f5365d3e7a52c58499aaff4bc1d08
|
|
| MD5 |
b382ff5889da7bd57d232c08ea00341c
|
|
| BLAKE2b-256 |
15f3425aed306db7efbb5532814e751d5ebb2198aa009d788c8c81efc1faa827
|