Skip to content

harlev/jsonbox-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jsonbox-python

Python wrapper for https://jsonbox.io (with support for V2 features)

PyPI version License: MIT Downloads Downloads CircleCI

Installation

pip install jsonbox

Usage

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)

Private Box

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()

Query Params

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.

Filters for Numeric values.

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

Filters for String values.

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

Deleting records

There are two ways to delete records (see examples above for both)

  • Provide the record_id
  • Provide a query parameter, with the same syntax used for filtering on read

Use your own instance of jsonbox

jb = JsonBox(service_host="https://my-jsonbox-server.com")

License

MIT