Skip to main content

datasette-ersatz-table-valued-functions

PyPI Changelog Tests License

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

Metadata

Release files for datasette-ersatz-table-valued-functions 0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for datasette-ersatz-table-valued-functions 0.2
File Size Uploaded
datasette-ersatz-table-valued-functions-0.2.tar.gz 6.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for datasette-ersatz-table-valued-functions 0.2
File Interpreter ABI Platform
datasette_ersatz_table_valued_functions-0.2-py3-none-any.whl Python 3 none any Details

Total release size: 14.6 kB

Release files / datasette-ersatz-table-valued-functions-0.2.tar.gz

Download URL datasette-ersatz-table-valued-functions-0.2.tar.gz
Size 6.9 kB
Tags Source
SHA-256 checksum
How to use checksums
dc89271db3a7b15d9bee060a48b6a6defa84e4f5e6f6d0aaed20eca46c67ce54
BLAKE2b-256 checksum
How to use checksums
a7a19a71dade6322cb7910604ee4695848134fb196542b6669a5ecbe61278a7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.1

Release files / datasette_ersatz_table_valued_functions-0.2-py3-none-any.whl

Download URL datasette_ersatz_table_valued_functions-0.2-py3-none-any.whl
Size 7.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cb821827c6cfb546aa8c32fda507d582319f5365d3e7a52c58499aaff4bc1d08
BLAKE2b-256 checksum
How to use checksums
15f3425aed306db7efbb5532814e751d5ebb2198aa009d788c8c81efc1faa827
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.1

Release history Release notifications | RSS feed

This release

0.2 This release

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page