Skip to main content

is a Simple, FileBase and Document Oriented database

Project description

PyPI PyVersion Downloads license

Introduction

PantherDB is a Simple, FileBase and Document Oriented database that you can use in your projects.

Features:

  • Document Oriented
  • Easy to use
  • Written in pure Python +3.8 based on standard type hints
  • Handle Database Encryption
  • Singleton connection per db_name

Usage

Database:

  • Create a database:

    db: PantherDB = PantherDB('database.pdb')
    
  • Create an encrypted database:

    Required cyptography install it with pip install pantherdb[full]

    from cryptography.fernet import Fernet
    key = Fernet.generate_key()  # Should be static (You should not generate new key on every run)
    db: PantherDB = PantherDB('database.pdb', secret_key=key)
    
  • Access to a collection:

    user_collection: PantherCollection = db.collection('User')
    
  • Delete a collection:

    db.collection('User').drop()
    

Create:

  • Insert document:

    user: PantherDocument = db.collection('User').insert_one(first_name='Ali', last_name='Rn')
    

Get:

  • Find one document:

    user: PantherDocument = db.collection('User').find_one(first_name='Ali', last_name='Rn')
    

    or

    user: PantherDocument = db.collection('User').find_one()
    
  • Find first document (alias of find_one()):

    user: PantherDocument = db.collection('User').first(first_name='Ali', last_name='Rn')
    

    or

    user: PantherDocument = db.collection('User').first()
    
  • Find last document:

    user: PantherDocument = db.collection('User').last(first_name='Ali', last_name='Rn')
    

    or

    user: PantherDocument = db.collection('User').last()
    
  • Find documents:

    users: list[PantherDocument] = db.collection('User').find(last_name='Rn')
    

    or all documents

    users: list[PantherDocument] = db.collection('User').find()
    
  • Count documents:

    users_count: int = db.collection('User').count(first_name='Ali')
    

Update:

  • Update a document:

    user: PantherDocument = db.collection('User').find_one(first_name='Ali', last_name='Rn')
    user.update(name='Saba')
    
  • Filter and Update a document:

    _filter = {'first_name': 'Ali', 'last_name': 'Rn'}
    is_updated: bool = db.collection('User').update_one(_filter, first_name='Saba')
    
  • Filter and Update many:

    _filter = {'first_name': 'Ali'}
    updated_count: int = db.collection('User').update_many(_filter, first_name='Saba')
    

Delete:

  • Delete a document:

    user: PantherDocument = db.collection('User').first(first_name='Ali', last_name='Rn')
    user.delete()
    
  • Filter and Delete a document:

    is_deleted: bool = db.collection('User').delete_one(first_name='Ali', last_name='Rn')
    
  • Filter and Delete many:

    deleted_count: int = db.collection('User').delete_many(last_name='Rn')
    

TODO:

  • Add encryption
  • Complete tests TODO
  • Add B+ tree

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

pantherdb-2.1.0.tar.gz (9.5 kB view hashes)

Uploaded Source

Built Distribution

pantherdb-2.1.0-py3-none-any.whl (7.2 kB view hashes)

Uploaded Python 3

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