duckQL is simple JSON-based notation for some SQL dialects (PostgreSQL, MariaDB, MySQL) based on pydantic library.
Here is a simple example of library usage. For more examples please visit project page.
from duckql import Query, Property, Comparision, Constant
my_query = Query(
entity='users',
properties=[
Property(name='users.name'),
Property(name='users.surname')
],
conditions=Comparision(
properties=[
Property(name='users.age'),
Constant(value=15)
],
operation=Comparision.Operation.GREATER_EQUAL
)
)
{
"obj": "structures.Query",
"entity": "users",
"properties": [
{
"obj": "properties.Property",
"name": "users.name"
},
{
"obj": "properties.Property",
"name": "users.surname"
}
],
"conditions": {
"obj": "structures.Comparision",
"properties": [
{
"obj": "properties.Property",
"name": "users.age"
},
{
"obj": "properties.Constant",
"value": "15"
}
],
"operation": "gte"
}
}
SELECT users.name, users.surname FROM users WHERE (users.age >= 15);
Project is using poetry and documentation is generated by MkDocs. If you want to generate documentation you need to follow these simple steps inside of your virtual environment:
poetry install
mkdocs build
Inside of your virtual environment, you can also use mkdocs serve
to create temporary auto-reload http server with
live docs.
We use pytest for unit tests and flake8 for code-style validation. You can execute tests inside of pipenv shell using these commands:
pytest -v .
: executes unit testspytest -v --flake8 .
: flake8 code-style tests
Made with ☕️ and ❤️ by Jakub Dubec & BACKBONE s.r.o.