bx

Simple in-memory storage for Python


License
MIT
Install
pip install bx==0.3.0

Documentation

Bx

In-memory storage for Python

build-status version downloads


                  __
           ___~~~`  `~~__
     ___~~~              `~~_
     |~_                     `~_
     |  ~_               ___ ~~ |
     |    ~_        __~~~       |
     |      ~_ __~~~            |
     |        |                 |
     |        |                 |
     |        |       bx        |
      ~_      |               __|
         ~_   |          __~~~
           ~_ |     __~~~
             ~|__~~~

bx lets you store things in memory. It has a few special features:

  • Thread safe
  • Setting a timeout before object is destroyed
  • JSON Schema validation
  • Clean & simple API
  • Badass ASCII art
  • Supports Python 2.7 and 3.4

Installation

Just make sure you have Python 2.7.x or 3.4.x and pip installed:

$ pip install bx

Usage

The code is pretty simple and well-commented, but here's some example usage. If you want more detail, run pydoc bx.Db once you've installed it or look through the code to get info.

import bx

student = {
    'title': 'student',
    'type': 'object',
    'required': ['name', 'major', 'gpa'],
    'properties': {
        'name': {
            'type': 'string'
        },
        'major': {
            'type': 'string'
        },
        'gpa': {
            'type': 'number'
        }
    }
}

# The schema argument defaults to None, and there is also an optional
# debug mode (for console logging) that defaults to False
db = bx.Db(schema=student)

try:
    db.put('bad', 'data')
except bx.db.ValidationError: # same as jsonschema.exceptions.ValidationError
    print('This does not fit the schema!')

john = {
    'name': 'John Doe',
    'major': 'Computer Science',
    'gpa': 3.6
}

susan = {
    'name': 'Susan Jones',
    'major': 'Physics',
    'gpa': 3.96
}

db.put('john', john)
db.put('susan', susan)

# get average gpa
print(sum([v['gpa'] for v in db.vals()]) / len(db.vals()))

db.delete('susan')

try:
    db.delete('bob')
except KeyError:
    print('bob is not in the data store!')