Skip to main content

Easy to use, fast, productive json database for python

Project description

JsthonDb

logo

Contests

  1. How to download
  2. Requirements
  3. Example json file
  4. All methods usage examples
  5. Errors
  6. Leave your feedback

How to download

git clone https://github.com/terribleMOTHMAN/JsthonDb
cd JsthonDb
python setup.py install

Requirements

  • uuid >= 1.30
  • ujson >= 5.6.0

Example json file

{
  "tvshows": {
    "keys": [

    ],
    "data": {

    }
  },
  "films": {
    "keys": [

    ],
    "data": {

    }
  }
}

All methods usage examples

Creating empty JsthonDb

from jsthon import JsthonDb

db = JsthonDb('main.json')

We created that empty file

{

}

create_table

Example usage (name field must be str)

db.create_table('tvshows')
db.create_table('films')
{
  "tvshows": {
    "keys": [

    ],
    "data": {

    }
  },
  "films": {
    "keys": [

    ],
    "data": {

    }
  }
}

You need to know that after using this method table that will be changed by the default methods will be films. Because it was created last

choose_table

Example usage (table field must be str)

db.choose_table('tvshows')

All the methods we will use will change the table 'tvshows' because we have chosen it

add

Example usage (data field must be dict)

id = db.add({'name': 'Breaking Bad', 'start': 2008})
print(id)

Output

279161855443486914901758992112454064004

Also we can use our own id without generating it (id field must be string)

id = db.add({'name': 'Mr. Robot', 'start': 2015}, "1")
print(id)

Output

1

add_many

Example usage (data field must be list with elements that are dictionaries)

added_values = db.add_many([{'name': 'Shameless', 'start': 2011}, {'name': 'The Boys', 'start': 2019}])
print(added_values)

Output

{'227987855254015167042504673548582084559': {'name': 'Shameless', 'start': 2011}, '334561175396969661937858438600623257934': {'name': 'The Boys', 'start': 2019}}

Also we can use our own ids without generating it (id field must be tuple with ids that are strings). Also, each id must correspond to a value in the data field

added_values = db.add_many([{'name': 'Scrubs', 'start': 2001}, {'name': 'How I Met Your Mother', 'start': 2005}], ("0", "2"))
print(added_values)

Output

{'0': {'name': 'Scrubs', 'start': 2001}, '2': {'name': 'How I Met Your Mother', 'start': 2005}}

take_all

Example usage

all = db.take_all()
print(all)

Output

{'279161855443486914901758992112454064004': {'name': 'Breaking Bad', 'start': 2008}, '1': {'name': 'Mr. Robot', 'start': 2015}, '227987855254015167042504673548582084559': {'name': 'Shameless', 'start': 2011}, '334561175396969661937858438600623257934': {'name': 'The Boys', 'start': 2019}, '0': {'name': 'Scrubs', 'start': 2001}, '2': {'name': 'How I Met Your Mother', 'start': 2005}}

take_by_id

Example usage

element = db.take_by_id("1")
print(element)

Output

{'name': 'Mr. Robot', 'start': 2015}

take_with_function

Example usage

def func(data):
    if data['start'] > 2010:
        return True

print(db.take_with_function(func))

Output

{'1': {'name': 'Mr. Robot', 'start': 2015}, '227987855254015167042504673548582084559': {'name': 'Shameless', 'start': 2011}, '334561175396969661937858438600623257934': {'name': 'The Boys', 'start': 2019}}

update_by_id

Example usage

updated_data = db.update_by_id("1", {'name': 'Better Call Saul'})
print(updated_data)
print(db.take_by_id("1"))

Output

{'name': 'Better Call Saul', 'start': 2015}
{'name': 'Better Call Saul', 'start': 2015}

update_with_function

Example usage

def func(data):
    if data['name'] == 'Shameless':
        return True

updated_data = db.update_with_function(func, {'name': '$hameless'})
print(updated_data)

Output

['227987855254015167042504673548582084559']

delete_by_id

Example usage

deleted_data = db.delete_by_id("227987855254015167042504673548582084559")
print(deleted_data)

Output

{'name': '$hameless', 'start': 2011}

delete_with_function

Example usage

def func(data):
    if data['start'] < 2015:
        return True


deleted_data = db.delete_with_function(func)
print(deleted_data)

Output

[{'name': 'Scrubs', 'start': 2001}, {'name': 'How I Met Your Mother', 'start': 2005}, {'name': 'Breaking Bad', 'start': 2008}]

add_new_key

Example usage

db.add_new_key('broadcast', True)
print(db.take_all())

Output

{'1': {'name': 'Better Call Saul', 'start': 2015, 'broadcast': True}, '334561175396969661937858438600623257934': {'name': 'The Boys', 'start': 2019, 'broadcast': True}}

add_new_keys

Example usage

db.add_new_keys(['ratings', 'language'], ['good', 'english'])
print(db.take_all())

Output

{'1': {'name': 'Better Call Saul', 'start': 2015, 'broadcast': True, 'ratings': 'good', 'language': 'english'}, '334561175396969661937858438600623257934': {'name': 'The Boys', 'start': 2019, 'broadcast': True, 'ratings': 'good', 'language': 'english'}}

show_table

Example usage

a = db.show_table()
print(a)

Output

[['name', 'start', 'broadcast', 'ratings', 'language'], ['Better Call Saul', 2015, True, 'good', 'english'], ['The Boys', 2019, True, 'good', 'english']]

clear_table

Example usage

db.clear_table()

Json file

{
  "tvshows": {
    "keys": [

    ],
    "data": {

    }
  },
  "films": {
    "keys": [

    ],
    "data": {

    }
  }
}

clear_db

Example usage

db.clear_db()

Json file

{

}

Errors

UnknownKeyError

It's raised when key was unrecognised or missed

FunctionIsNotCallable

It's raised when function was given to the method is not callable or is not function

WrongIdsListWasGiven

It's raised when idswas given to the method have wrong type

IdWasNotFound

It's raised when id was not found in the table

IdIsAlreadyUsed

It's raised when id was given to the methon is not unique in the table

NotUniqueNameOfTable

It's raised when name of table that was given is not unique

WrongFileName

It's raised when wrong filename was given to a class

Leave your feedback

I need your review! It will be pleasure for me ^_^

Survey

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

jsthon-0.4.1.tar.gz (6.5 kB view hashes)

Uploaded Source

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