Sqlite3-backed basic python objects for large/persistent data
Python
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
sqlite_object
.gitignore
LICENSE
README.md
setup.py
test_objects.py

README.md

sqlite_object

Sqlite3-backed basic python objects for large/persistent data. Works with python 2 (tested with 2.7) and 3

Sqlite object was created to handle collections big collections of smallish things and avoiding the complexity/slowness of using a remote datastore. An example might be keeping a list of millions of identifiers on hand and being able to interact with that list as if it were a regular python list (or dict, or set).

sqlite_object implements a python list, set, and dict that are backed by an sqlite db. This gives pretty speedy access, but allows efficient handling of collections that are awkwardly large to keep in memory.

The library implements most functions of their stock python counterparts. Some functions behave slightly differently, and some functions are intentionally left unimplemented.

The package is available on pypi: https://pypi.python.org/pypi/sqlite_object

sudo pip install sqlite_object

Full package docs here: https://pythonhosted.org/sqlite_object/

The objects are pretty easy to use, and generally behave like their in-memory counterparts. The unit tests (test_objects.py) contain more in-depth examples.

from sqlite_object import SqliteDict, SqliteList, SqliteSet

#Create a dict
d = SqliteDict()
d["key"] = "value"

#Create a list
l = SqliteList()
l.append("something")

#Create a set
s = SqliteSet()
s.add(1)

#Initializers can be used with all the object types
d = SqliteDict({'key':'value'})
l = SqliteList([1, 2, 3])
s = SqliteSet({1, 2, 3})

#If you want to persist the backing database, say so.  
#You can also specify the filename of the database (instead of using a randomly generated name).  
#Handy if you need to put the db somewhere other than the working directory.  
#All of the objects can be created this way.
l = SqliteList([1, 2, 3], filename="/var/something/db/my_awesome_db.sqlite3", persist=True)

#Then if you need to create it later, it will come back with the same data
del l
l2 = SqliteList(filename="/var/something/db/my_awesome_db.sqlite3", persist=True)