embedded graph datastore
Project description
Graphlite is a tiny graph datastore that stores adjacency lists similar to FlockDB but like conventional graph databases, allow you to query them with traversals (graph-walking queries), and works with datasets that you can fit into your SQLite database.
from graphlite import connect, V
graph = connect(':memory:', graphs=['knows'])
with graph.transaction() as tr:
for i in range(2, 5):
tr.store(V(1).knows(i))
tr.store(V(2).knows(3))
tr.store(V(3).knows(5))
# who are the friends of the mutual friends
# of both 1 and 2?
graph.find(V(1).knows)\
.intersection(V(2).knows)\
.traverse(V().knows)\
.to(list)
# => [5]
Graphlite is thread safe, meaning that when transactions are comitted (at the end of the with block), a lock is held and only the thread that commits gets to run. Thread safety is emphasised if you look at the test suite.
Installing
$ pip install graphlite
Contributing
If you want to contribute, we follow the Github workflow, so fork the repo, work on the code and just make a pull request (make sure all tests pass beforehand, at least in the last commit of your pull request). In short:
$ git clone ssh://git@github.com/$USERNAME/graphlite.git
$ cd graphlite
$ git checkout -b $FEATURE
$ # hackedy hack hack
$ py.test tests
$ git commit -a
$ git push
Note that we use py.test for testing so if you haven’t, make sure you pip install pytest. But you should.
Maintainer: Eugene Eeo
License: MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.