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.2.0.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

pysondb_v2-2.2.0-py2.py3-none-any.whl (9.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pysondb-v2-2.2.0.tar.gz.

File metadata

  • Download URL: pysondb-v2-2.2.0.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for pysondb-v2-2.2.0.tar.gz
Algorithm Hash digest
SHA256 1f5d2d864e5f5d1334d639681199255526ab0c8aa0b4b324462e78aae0e08d10
MD5 ac910b667f839745e94d96c3f9de559f
BLAKE2b-256 200c1850a1e6f9c80e275fd228ef26e1c56e8c1107f7bf45facfbbac0a8867a4

See more details on using hashes here.

File details

Details for the file pysondb_v2-2.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: pysondb_v2-2.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for pysondb_v2-2.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3226ee94b7550e602f7061f68ae64b5d02812153d799b57aa74343f20ed0cd9b
MD5 ec97026185442c986d59d08cc16c3f93
BLAKE2b-256 b53878575cfbaec7b8a1bc96d94ee4a2166b4957758b25f25bff80aa48e34764

See more details on using hashes here.

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