Skip to main content

JSON to SQL query generator

Project description

jsqlib

JSON to SQL query generator.

pipeline status PyPI version

Builds SQL queries from pre-designed JSON structures.

Installation

OS X & Linux & Windows:

pip install jsqlib

Usage example

from jsqlib import Query

json = """{
  "query": {
    "select": [
      {
        "eval": 1
      }
    ]
  }
}
"""

query = Query(json)
assert query.sql == 'select 1'

schema = '{}'
query = Query(json, schema=schema)  # optional schema to validate the query
query.validate()  # explicit query validation

Development setup

  • coverage
$ poetry run pytest --cov
  • format
$ poetry run black jsqlib -S
  • lint
$ poetry run ruff check
  • type checking
$ poetry run pyre

Release History

  • 0.9a0
    • CHANGE: python-box library updated to version 7 (#28)
    • CHANGE: sqlfluff library updated to version 3. Warning: query.prettify output may change. (#34)
    • CHANGE: python 3.12 support (#35)
  • 0.8a0
    • CHANGE: nested select in insert from select statement (#31)
  • 0.7a0
    • ADD: <~~> unquoting wrapper support (#29)
  • 0.6a0
    • CHANGE: validating the rendered json query against the provided schema without any changes (#26)
  • 0.5a0
    • FIX: local variable 'data' referenced before assignment in Builder._update (#18)
    • ADD: support for a name attribute in JSON select definition (#20)
    • ADD: validating JSON query against a schema if any (#19)
  • 0.4a0
    • FIX: order by implicit asc construct (#16)
    • CHANGE: library no longer modifies the original json query (#15)
    • ADD: __version__ package attribute (#14)
  • 0.3a0
    • ADD: not like, delete using constructs (#12, #13)
  • 0.2a0
    • ADD: dialect based stringification (#11)
    • ADD: custom builder support (#10)
  • 0.1a0
    • initial alpha-release
  • 0.0.1
    • wip

Meta

pymancer@gmail.com (Polyanalitika LLC)
https://gitlab.com/ru-r5/jsqlib

License

This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at https://mozilla.org/MPL/2.0/.

Contributing

  1. Fork it (https://gitlab.com/ru-r5/jsqlib/fork)
  2. Create your feature branch (git checkout -b feature/foo)
  3. Commit your changes (git commit -am 'Add some foo')
  4. Push to the branch (git push origin feature/foo)
  5. Create a new Pull Request

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

jsqlib-0.9a0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

jsqlib-0.9a0-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file jsqlib-0.9a0.tar.gz.

File metadata

  • Download URL: jsqlib-0.9a0.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.4 Linux/5.15.154+

File hashes

Hashes for jsqlib-0.9a0.tar.gz
Algorithm Hash digest
SHA256 668dabf511151da938ff5e850b7a1d193165f4fd6d420838516da4e5a802a7fd
MD5 c678b04956b392c881edcfcbe5cd8786
BLAKE2b-256 cab5ee555ecdcba3c12c813d69b8ab974d24cbb5dfd286d2b4b8ce7b5d0f5a79

See more details on using hashes here.

File details

Details for the file jsqlib-0.9a0-py3-none-any.whl.

File metadata

  • Download URL: jsqlib-0.9a0-py3-none-any.whl
  • Upload date:
  • Size: 12.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.4 Linux/5.15.154+

File hashes

Hashes for jsqlib-0.9a0-py3-none-any.whl
Algorithm Hash digest
SHA256 f2f5242cbe6d93aa06e9df78f3bec68b47eee7f1979baa8f989fa587229bf471
MD5 27adec3ce301ad94545adba7b5855628
BLAKE2b-256 23c4c6b3223e9ba245cdeaece2170b05cdca824757f1249dd96992162f7ad4e0

See more details on using hashes here.

Supported by

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