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
Hashes for datasette-ersatz-table-valued-functions-0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc89271db3a7b15d9bee060a48b6a6defa84e4f5e6f6d0aaed20eca46c67ce54 |
|
MD5 | f609c168a5cb6fc073906c17930fd6c8 |
|
BLAKE2b-256 | a7a19a71dade6322cb7910604ee4695848134fb196542b6669a5ecbe61278a7f |
Hashes for datasette_ersatz_table_valued_functions-0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb821827c6cfb546aa8c32fda507d582319f5365d3e7a52c58499aaff4bc1d08 |
|
MD5 | b382ff5889da7bd57d232c08ea00341c |
|
BLAKE2b-256 | 15f3425aed306db7efbb5532814e751d5ebb2198aa009d788c8c81efc1faa827 |