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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b22d7084232738873c7b3f40a0d2b256feb134cb2052c39cbd077b6a561de67f
|
|
| MD5 |
475ef0fc9697e3ba676f28d45cbb146a
|
|
| BLAKE2b-256 |
225825dbebab52b32465d6820d2b3ee2b368297699afd3c8ba356b28ada95e90
|
File details
Details for the file abstra_json_sql-0.0.8-py3-none-any.whl.
File metadata
- Download URL: abstra_json_sql-0.0.8-py3-none-any.whl
- Upload date:
- Size: 19.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4203697fe5d9c51dbfdefb63baa4fb2b34ac0b883267ebbd20c873c15ba77872
|
|
| MD5 |
96519e669950efe178b6c34eea0d69a7
|
|
| BLAKE2b-256 |
d7ff670d9952628e168413c20b04475c47155074a8069eb107f4be377da097f6
|