Skip to main content

A JSON query to SQL parser loosely based on the Loopback Query Language

Project description

JTOS

JSON to SQL. Inspired by the Loopback Query Language, this is a standalone Python library to convert JSON objects to SQL.

Schema

Select

{
  "select": {
    "tables": [],
    "fields": []
   }
}

Joins

{
  "join": {
    "type": "LEFT | RIGHT etc",
    "conditions":{
      "from": {
        "table": "",
        "field": ""
      },
      "to": {
        "table": "",
        "field": ""
      }
    } 
  }
}

Where Conditions

{
  "where": [
    {
      "field": "",
      "op": <op>,
      "val": "",
      "join": "o|a"
    }
  ]
}

NOTE: An operator should only be included from the second index and it will be prepended to the built string

Ordering

{
  "select":{
    ...,
    "orderBy": {
      "<field>": "ASC|DESC"
    }
  }
}

Paging

{
  "limit": 100,
  "offset": 3
}

Insert

{
  "insert": {
    "table": "",
    "values": {
      "<field>": "<value>"
    }
  }
}

Operations

  • gt - >
  • lt - <
  • gte - >=
  • lte - <=
  • e - =
  • ne - !=
  • l - LIKE
  • nl - NOT LIKE
  • a - AND
  • a - OR

Notes

This does no authentication or validation, it just blindly trusts the tests.

Do not run on production unless you are comfortable with it in your test environment first

Contributing

Tests, please! But also any work on Upserts or Delete are also greatly appreciated

TODO

  • [X] Select
  • [X] Where
  • [X] Joins
  • [X] Insert
  • [ ] Upsert (this syntax is quite different so maybe needs a different parser)
  • [X] Delete

Examples

Examples are included in the tests directory

Project details


Download files

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

Files for JTOS, version 0.8.0
Filename, size File type Python version Upload date Hashes
Filename, size JTOS-0.8.0-py3-none-any.whl (3.5 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size JTOS-0.8.0.tar.gz (4.0 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page