home / github / issue_comments

Menu
  • Search all tables
  • GraphQL API

issue_comments: 1229118619

This data as json

html_url issue_url id node_id user created_at updated_at author_association body reactions issue performed_via_github_app
https://github.com/simonw/sqlite-utils/issues/471#issuecomment-1229118619 https://api.github.com/repos/simonw/sqlite-utils/issues/471 1229118619 IC_kwDOCGYnMM5JQtyb 9599 2022-08-27T04:14:52Z 2022-08-27T04:14:52Z OWNER

Quick prototype: ```diff diff --git a/sqlite_utils/cli.py b/sqlite_utils/cli.py index 43e76fa..5dee4f6 100644 --- a/sqlite_utils/cli.py +++ b/sqlite_utils/cli.py @@ -1633,6 +1633,9 @@ def drop_view(path, view, ignore, load_extension): type=(str, str), help="Named :parameters for SQL query", ) +@click.option( + "--functions", help="Python code defining one or more custom SQL functions" +) @load_extension_option def query( path, @@ -1649,6 +1652,7 @@ def query( raw, param, load_extension, + functions, ): """Execute SQL query and return the results as JSON

@@ -1665,6 +1669,16 @@ def query( _load_extensions(db, load_extension) db.register_fts4_bm25()

  • Register any Python functions as SQL functions:

  • if functions:
  • locals = {}
  • globals = {}
  • exec(functions, globals, locals)
  • Register all callables in the locals dict:

  • for name, value in locals.items():
  • if callable(value):
  • db.register_function(value, name=name) + _execute_query( db, sql, param, raw, table, csv, tsv, no_headers, fmt, nl, arrays, json_cols ) Demo:bash % sqlite-utils :memory: 'select 1 + dog()' --functions ' quote> def dog(): quote> return 2 quote> ' [{"1 + dog()": 3}] ```
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
1352932716  
Powered by Datasette · Queries took 1.083ms · About: github-to-sqlite