Skip to content

Flask extension to integrate with the official python driver

License

Notifications You must be signed in to change notification settings

scbunn/Flask-Neo4jDriver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flask-Neo4jDriver

Flask-Neo4jDriver is a flask extension that provides integration with the official neo4j python drivers.

Flask-Neo4jDriver > 0.2.0 requires python 3. Experimental graph mapping models are introduced in version 0.2.0.

Introduction

This extension provides basic integration with the official python driver.

Flask-Neo4jDriver is designed to provide an interface to the Neo4j graph database. This extension exposes the neo4j.v1.GraphDatabase.Driver object for direct manipulation.

Additionally, this extension provides a handful of helper utility methods including the following:

  • session. Return a GraphDatabase.Session
  • query(). Run a cypher query within a session() context.

Installation

Flask-Neo4jDriver can be installed from PyPI.

pip install Flask-Neo4jDriver

To install the latest development version, use:

pip install git+https://github.com/scbunn/flask-neo4jdriver.git@develop

Usage

In order to use this extension you need to initialize it with the flask application. This can be done directly or via an application factory. Once the extension has been initialized it is available through the db object.

Configuration

Flask-Neo4jDriver supports the following configuration options.

Configuration Key Description Default
GRAPHDB_URI URI of the Neo4j Database bolt://localhost:7687
GRAPHDB_USER Username to connect to the database neo4j
GRAPHDB_PASS Password for the user neo4j

Example:

import os
from flask import Flask
from flask.ext.neo4jdriver import Neo4jDriver

app = Flask(__name__)
app.config['GRAPHDB_URI'] = 'bolt://neo4j.host:7687'
app.config['GRAPHDB_USER'] = 'appuser'
app.config['GRAPHDB_PASS'] = os.getenv('GRAPHDB_PASS', '')

db = Neo4jDriver(app)

Direct Initialization

If you are not using an application factory, then you can initialize this extension directly.

from flask import Flask
from flask.ext.neo4jdriver import Neo4jDriver

app = Flask(__name__)
db = Neo4jDriver(app)

Application Factories

If you are using an application factory, then you can initialize this extension within your create_app() method.

in models.py

from flask.ext.neo4jdriver import Neo4jDriver

db = Neo4jDriver()

At your application factory

from flask import Flask


def create_app(config_filename):
    app = Flask(__name__)
    app.config.from_pyfile(config_filename)

    from yourapplication.models import db
    db.init_app(app)

Testing

You can execute the test suite using setup.py

python setup.py test

Contributing

Have features you want to add? Fork this repository and send me a pull request. Please make sure you include test cases for any additional features.

Looking for something to do? Here is of open TODO items.

  • Move Validators to Properties
  • implement equality for Nodes (i.e. Node1 == Node2)
  • implement hash for Node
  • Fully implement logger
  • Implement the Relationship model. - should be simple: r = Relationship(node1, 'LINKED', node2) - r.save()
  • Implement Query - First model is simple. Just an execute() method that supports pagination. - implement other useful methods...

I'm currently not trying to implement a fully OGM type of setup with the model system. I expect the application to still have to execute raw cypher for most queries. The model system is intended to help, primarily, with the lifecycle of Nodes.

About

Flask extension to integrate with the official python driver

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages