Skip to main content

run SQL queries on JSON data

Project description

abstra-json-sql

abstra-json-sql is a Python library that allows you to run SQL queries on JSON data. It is designed to be simple and easy to use, while providing powerful features for querying and manipulating JSON data.

[!WARNING]
This project is in its early stages and is not yet ready for production use. The API may change, and there may be bugs. Use at your own risk.

Installation

You can install abstra-json-sql using pip:

pip install abstra-json-sql

Usage

Command Line Interface

Assuming you have a directory structure like this:

.
├── organizations.json
├── projects.json
└── users.json

You can query the JSON files using SQL syntax. For example, to get all users from the users file, you can run:

abstra-json-sql "select * from users"

This will return all the users in the users.json file.

Python API

You can also use abstra-json-sql in your Python code. Here's an example:

from abstra_json_sql.eval import eval_sql
from abstra_json_sql.tables import InMemoryTables, Table, Column

code = "\n".join(
    [
        "select foo, count(*)",
        "from bar as baz",
        "where foo is not null",
        "group by foo",
        "having foo <> 2",
        "order by foo",
        "limit 1 offset 1",
    ]
)
tables = InMemoryTables(
    tables=[
        Table(
            name="bar",
            columns=[Column(name="foo", type="text")],
            data=[
                {"foo": 1},
                {"foo": 2},
                {"foo": 3},
                {"foo": 2},
                {"foo": None},
                {"foo": 3},
                {"foo": 1},
            ],
        )
    ],
)
ctx = {}
result = eval_sql(code=code, tables=tables, ctx=ctx)

print(result) # [{"foo": 3, "count": 2}]

Supported SQL Syntax

  • WITH

    • RECURSIVE
  • SELECT

    • ALL
    • DISTINCT
    • *
    • FROM
      • JOIN
        • INNER JOIN
        • LEFT JOIN
        • RIGHT JOIN
        • FULL JOIN
        • CROSS JOIN
    • WHERE
    • GROUP BY
    • HAVING
    • WINDOW
    • ORDER BY
    • LIMIT
    • OFFSET
    • FETCH
    • FOR
  • INSERT

  • UPDATE

  • DELETE

  • CREATE

  • DROP

  • ALTER

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abstra_json_sql-0.0.8.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abstra_json_sql-0.0.8-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file abstra_json_sql-0.0.8.tar.gz.

File metadata

  • Download URL: abstra_json_sql-0.0.8.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for abstra_json_sql-0.0.8.tar.gz
Algorithm Hash digest
SHA256 b22d7084232738873c7b3f40a0d2b256feb134cb2052c39cbd077b6a561de67f
MD5 475ef0fc9697e3ba676f28d45cbb146a
BLAKE2b-256 225825dbebab52b32465d6820d2b3ee2b368297699afd3c8ba356b28ada95e90

See more details on using hashes here.

File details

Details for the file abstra_json_sql-0.0.8-py3-none-any.whl.

File metadata

File hashes

Hashes for abstra_json_sql-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 4203697fe5d9c51dbfdefb63baa4fb2b34ac0b883267ebbd20c873c15ba77872
MD5 96519e669950efe178b6c34eea0d69a7
BLAKE2b-256 d7ff670d9952628e168413c20b04475c47155074a8069eb107f4be377da097f6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page