Using Neo4j with Community Drivers

Neo4j Community projects

In addition to the officially supported drivers, you can find their Community alternatives. Links to their relevant resources are provided below.

Members of the each programming language community have invested a lot of time and love to develop each one of the community drivers for Neo4j, so if you use any one of them, provide feedback to the authors.

The Community Drivers have been graciously contributed by the Neo4j community. Many of them are fully featured and well-maintained, but some may not be. Neo4j does not take any responsibility for their usability.

.NET Community drivers

Neo4jClient

A .NET client for Neo4j, which makes it easy to write Cypher® queries in C# with IntelliSense. It also supports basic CRUD and legacy indexing.

Source

https://github.com/DotNet4Neo4j/neo4jclient

NuGet Package

https://nuget.org/packages/neo4jclient

Authors

Charlotte Skardon Tatham Oddie

Docs

https://github.com/DotNet4Neo4j/Neo4jClient/wiki

Example

https://github.com/neo4j-examples/movies-dotnet-neo4jclient

Protocol

Bolt, Http

Neo4j.Driver.Extensions

Neo4j.Driver.Extensions provides a set of extension methods to the official driver API, aiming at reducing boilerplate and easing mapping to entity classes.

Source

https://github.com/DotNet4Neo4j/Neo4j.Driver.Extensions

NuGet Package

https://nuget.org/packages/neo4j.driver.extensions

Authors

Charlotte Skardon

Docs

Introduction blogpost

JavaScript Community drivers

js2neo

As an example of a minimal JavaScript based Bolt driver, you can use js2neo.

Python Community drivers

For anyone working with Python, the Neo4j community have contributed a range of driver options. These range from lightweight to comprehensive driver packages as well as libraries designed for use with web frameworks such as Django.

While Python 3 is preferred, some drivers still support Python 2, thus check with the individual project if you need it.

While we do not provide a specific web framework recommendation, both the lightweight Flask and the more comprehensive Django frameworks are known to work well.

Py2neo

Py2neo is a client library and comprehensive toolkit for working with Neo4j from within Python applications and from the command line. It has been carefully designed to be easy and intuitive to use.

Author

Nigel Small

Package

https://pypi.python.org/pypi/py2neo

Source

https://github.com/technige/py2neo

Example

https://github.com/neo4j-examples/movies-python-py2neo

Docs

http://py2neo.org/

Python

2.7 / 3.4+

Protocols

Bolt, Http

Installation
pip install py2neo
Example
from py2neo import Graph
graph = Graph()

tx = graph.begin()
for name in ["Alice", "Bob", "Carol"]:
    tx.append("CREATE (person:Person name: $name) RETURN person", name=name)
alice, bob, carol = [result.one for result in tx.commit()]

Neomodel

neomodel.200x80

An Object Graph Mapper built on top of the Neo4j python driver. Familiar Django style node definitions with a powerful query API, thread safe and full transaction support. A Django plugin django_neomodel is also available.

Author

Athanasios Anastasiou and Robin Edwards

Package

https://pypi.python.org/pypi/neomodel

Source

http://github.com/neo4j-contrib/neomodel

Docs

https://neomodel.readthedocs.io/en/latest/

Python

2.7 / 3.3+

Protocols

Bolt

Example App

https://github.com/neo4j-examples/neo4j-movies-python-neomodel

Installation
pip install neomodel
Example
from neomodel import StructuredNode, StringProperty, RelationshipTo, RelationshipFrom, config

config.DATABASE_URL = 'bolt://neo4j:test@localhost:7687'

class Book(StructuredNode):
    title = StringProperty(unique_index=True)
    author = RelationshipTo('Author', 'AUTHOR')

class Author(StructuredNode):
    name = StringProperty(unique_index=True)
    books = RelationshipFrom('Book', 'AUTHOR')

harry_potter = Book(title='Harry potter and the..').save()
rowling =  Author(name='J. K. Rowling').save()
harry_potter.author.connect(rowling)

Go Community drivers

GoGM: Golang Object Graph Mapper

Author

Eric Solender, CTO and co-founder of Mindstand

Source

https://github.com/mindstand/gogm

Docs

https://github.com/mindstand/gogm/blob/master/README.md