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:

    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').lasst()
    
  • Find documents:

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

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

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

Update:

  • Update documents:

    user: PantherDocument = db.collection('User').get(first_name='Ali', last_name='Rn')
    user.update(name='Saba')
    
  • Find and Update one:

    _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 documents:

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

    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
  • Find better encryption solution

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-1.3.0.tar.gz (7.8 kB view hashes)

Uploaded Source

Built Distribution

pantherdb-1.3.0-py3-none-any.whl (5.9 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