/pysonDB-v2

A revamped version of pysondb. New Schema, super fast

Primary LanguagePythonMIT LicenseMIT

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