Skip to main content

A Simple, Lightweight, Efficent JSON based database for Python.

Project description

PysonDB-V2

The new DB schema

{
    "version": 2,
    "keys" ["a", "b", "c"],
    "data": {
        "384753047545745": {
            "a": 1,
            "b": "something",
            "c": true
        }
    }
}

Quick walk through of all the methods

from pysondb import PysonDB


db = PysonDB('test.json')
!cat test.json
{
    "version": 2,
    "keys": [],
    "data": {}
}

add

id = db.add({
    'name': 'adwaith',
    'age': 4,
    'knows_python': True
})
print(id)
231541323453553701
!cat test.json
{
    "version": 2,
    "keys": [
        "age",
        "knows_python",
        "name"
    ],
    "data": {
        "231541323453553701": {
            "name": "adwaith",
            "age": 4,
            "knows_python": true
        }
    }
}

add_many

added_values = db.add_many([
    {
        'name': 'fredy',
        'age': 19,
        'knows_python': True
    },
    {
        'name': 'kenny',
        'age': 19,
        'knows_python': False
    }
])
print(added_values)
None
added_values = db.add_many([
    {
        'name': 'mathew',
        'age': 22,
        'knows_python': False
    },
    {
        'name': 'abi',
        'age': 19,
        'knows_python': True
    }
], json_response=True)
print(added_values)
{'330993934764646664': {'name': 'mathew', 'age': 22, 'knows_python': False}, '131457970736078364': {'name': 'abi', 'age': 19, 'knows_python': True}}
!cat test.json
{
    "version": 2,
    "keys": [
        "age",
        "knows_python",
        "name"
    ],
    "data": {
        "231541323453553701": {
            "name": "adwaith",
            "age": 4,
            "knows_python": true
        },
        "263597723557497291": {
            "name": "fredy",
            "age": 19,
            "knows_python": true
        },
        "299482429835276227": {
            "name": "kenny",
            "age": 19,
            "knows_python": false
        },
        "330993934764646664": {
            "name": "mathew",
            "age": 22,
            "knows_python": false
        },
        "131457970736078364": {
            "name": "abi",
            "age": 19,
            "knows_python": true
        }
    }
}

get_by_id

print(db.get_by_id('263597723557497291'))
{'name': 'fredy', 'age': 19, 'knows_python': True}

get_by_query

def age_divisible_by_2(data):
    if data['age'] % 2 == 0:
        return True

print(db.get_by_query(query=age_divisible_by_2))
{'231541323453553701': {'name': 'adwaith', 'age': 4, 'knows_python': True}, '330993934764646664': {'name': 'mathew', 'age': 22, 'knows_python': False}}

get_all

print(db.get_all())
{'231541323453553701': {'name': 'adwaith', 'age': 4, 'knows_python': True}, '263597723557497291': {'name': 'fredy', 'age': 19, 'knows_python': True}, '299482429835276227': {'name': 'kenny', 'age': 19, 'knows_python': False}, '330993934764646664': {'name': 'mathew', 'age': 22, 'knows_python': False}, '131457970736078364': {'name': 'abi', 'age': 19, 'knows_python': True}}

update_by_id

updated_data = db.update_by_id('231541323453553701', {
    'age': 18
})
print(updated_data)
{'name': 'adwaith', 'age': 18, 'knows_python': True}

update_by_query

updated_ids = db.update_by_query(
    query=lambda x: x['name'] == 'abi',
    new_data={'knows_python': False}
)
print(updated_ids)
['131457970736078364']
!cat test.json
{
    "version": 2,
    "keys": [
        "age",
        "knows_python",
        "name"
    ],
    "data": {
        "231541323453553701": {
            "name": "adwaith",
            "age": 18,
            "knows_python": true
        },
        "263597723557497291": {
            "name": "fredy",
            "age": 19,
            "knows_python": true
        },
        "299482429835276227": {
            "name": "kenny",
            "age": 19,
            "knows_python": false
        },
        "330993934764646664": {
            "name": "mathew",
            "age": 22,
            "knows_python": false
        },
        "131457970736078364": {
            "name": "abi",
            "age": 19,
            "knows_python": false
        }
    }
}

delete_by_id

db.delete_by_id('131457970736078364')  # delete abi
!cat test.json
{
    "version": 2,
    "keys": [
        "age",
        "knows_python",
        "name"
    ],
    "data": {
        "231541323453553701": {
            "name": "adwaith",
            "age": 18,
            "knows_python": true
        },
        "263597723557497291": {
            "name": "fredy",
            "age": 19,
            "knows_python": true
        },
        "299482429835276227": {
            "name": "kenny",
            "age": 19,
            "knows_python": false
        },
        "330993934764646664": {
            "name": "mathew",
            "age": 22,
            "knows_python": false
        }
    }
}

delete_by_query

ids = db.delete_by_query(lambda x: x['knows_python'] is False)
print(ids)
['299482429835276227', '330993934764646664']
!cat test.json
{
    "version": 2,
    "keys": [
        "age",
        "knows_python",
        "name"
    ],
    "data": {
        "231541323453553701": {
            "name": "adwaith",
            "age": 18,
            "knows_python": true
        },
        "263597723557497291": {
            "name": "fredy",
            "age": 19,
            "knows_python": true
        }
    }
}

purge

db.purge()
!cat test.json
{
    "version": 2,
    "keys": [],
    "data": {}
}

For more docs click here

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

pysondb-v2-2.1.0.tar.gz (8.9 kB view hashes)

Uploaded source

Built Distribution

pysondb_v2-2.1.0-py2.py3-none-any.whl (9.1 kB view hashes)

Uploaded py2 py3

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