The following table shows the results of a benchmark comparing several ORM and graph databases, for writing and reading 10 000 nodes/objects, using a random access:

Base

Writing

Reading

Semantics

Python + SQLAlchemy (1.3.2)

156 obj/sec

5 345 obj/sec

object

Python + SQLObjet (3.7)

51 obj/sec

11 727 obj/sec

object

Python + MongoDB (4.0.4)

2 289 obj/sec

4 723 obj/sec

document

Python + Neo4J (3.4.9)

245 obj/sec

223 obj/sec

graph

Python + Owlready2 (0.16)

12 892 obj/sec

19 158 obj/sec

object, ontology (OWL)

PyPy3 + Owlready2 (0.16)

12 089 obj/sec

31 502 obj/sec

object, ontology (OWL)

(higher numbers are better)

Owlready2 beats all other objet/graph database for performances. This can be explained by the fact that the internal databse (SQLite3) is directly integrated in the application. On the contrary, Neo4J and MongoDB use a distant server; in this case, communications between the application and the distant server have an important performance cost.

Owlready2 also has better functionality, thanks to its higher semantic level (e.g. multiple inheritance, etc).