Python wrapper for https://jsonbox.io (with support for V2 features)
PyPI version License: MIT Downloads Downloads CircleCI
pip install jsonbox
from jsonbox import JsonBox # generate unique box id MY_BOX_ID = JsonBox.get_new_box_id() # create instance jb = JsonBox() data = [{"name": "first", "age": 25}, {"name": "second", "age": 19}] # write data result = jb.write(data, MY_BOX_ID) # get record id of written data record_ids = jb.get_record_id(result) # read record print(jb.read(MY_BOX_ID, record_ids[0])) # read all records in box print(jb.read(MY_BOX_ID)) # get metadata for box print(jb.get_meta(MY_BOX_ID)) # read all records in box with sort print(jb.read(MY_BOX_ID, sort_by="age")) # read records in box with sort matching query (see documentation for syntax) print(jb.read(MY_BOX_ID, query="name:firs*")) print(jb.read(MY_BOX_ID, query="age:=19")) # read records with limit print(jb.read(MY_BOX_ID, limit=1)) # read records with skip print(jb.read(MY_BOX_ID, skip=1)) # update data data = {"name": "Bob", "age": 23} jb.update(data, MY_BOX_ID, record_ids[0]) # read updated data print(jb.read(MY_BOX_ID)) print(jb.read(MY_BOX_ID, record_ids[0])) # delete records matching to query print(jb.delete(MY_BOX_ID, query="age:=23")) # delete records jb.delete(MY_BOX_ID, record_ids[1]) # write to a private box MY_PRIVATE_BOX_ID = JsonBox.get_new_box_id() api_key = jb.get_new_api_key() result = jb.write(data, MY_PRIVATE_BOX_ID, api_key=api_key) record_id = jb.get_record_id(result) # update a private box data = {"name": "David", "age": 35} jb.update(data, MY_PRIVATE_BOX_ID, record_id, api_key=api_key) # delete a private box jb.delete(MY_PRIVATE_BOX_ID, record_id, api_key=api_key)
Add api_key to write/update/delete as shown above.
read is always accessible, even with out an api_key.
A valid and unique api_key can be generated using get_new_api_key()
As supported (and documented) by https://github.com/vasanthv/jsonbox
You can query by constructing a query string and passing it to the query parameter:
name:arya%20stark,age:>13
The above sample will look for the name arya stark and age greater than 13.
You can filter on Number, String & Boolean values only.
| Sample | |
|---|---|
| To filter values greater than or less than a specific value | age:>10 or age:<10 |
| To filter values greater (or less) than or equal to a specific value | age:>=10 or age:<=10 |
| To filter values that match a specific value. | age:=10 |
| Sample | |
|---|---|
| Filter values that start with a specific string | name:arya* |
| Filter values that end with a specific string | name:*stark |
| Filter values where a specific string appears anywhere in a string | name:*ya* |
| Filter values that match a specific string | name:arya%20stark |
You can combine multiple fields by separating them with commas as shown below:
name:arya%20stark,age:>13,isalive:true
There are two ways to delete records (see examples above for both)
- Provide the
record_id - Provide a
queryparameter, with the same syntax used for filtering on read
jb = JsonBox(service_host="https://my-jsonbox-server.com")
MIT