使用Python Neo4j Embedded的最小烧瓶示例

使用Python Neo4j Embedded的最小烧瓶示例,python,flask,neo4j,Python,Flask,Neo4j,我无法通过嵌入的Python绑定(neo4j/Python embedded,版本1.6)使用neo4j graphdatabase实现Python Micro Webframework Flask的最小工作示例。我所拥有的(基于此堆栈溢出-)是: 不幸的是,它抛出: File "/home/tobias/Esk/Dev/adhocracyLight/venv/lib/python2.7/site-packages/flask/app.py", line 1518, in __call_

我无法通过嵌入的Python绑定(neo4j/Python embedded,版本1.6)使用neo4j graphdatabase实现Python Micro Webframework Flask的最小工作示例。我所拥有的(基于此堆栈溢出-)是:

不幸的是,它抛出:

    File "/home/tobias/Esk/Dev/adhocracyLight/venv/lib/python2.7/site-packages/flask/app.py", line 1518, in __call__
return self.wsgi_app(environ, start_response)
File "/home/tobias/Esk/Dev/adhocracyLight/venv/lib/python2.7/site-packages/flask/app.py", line 1506, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/home/tobias/Esk/Dev/adhocracyLight/venv/lib/python2.7/site-packages/flask/app.py", line 1504, in wsgi_app
response = self.full_dispatch_request()
File "/home/tobias/Esk/Dev/adhocracyLight/venv/lib/python2.7/site-packages/flask/app.py", line 1264, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/tobias/Esk/Dev/adhocracyLight/venv/lib/python2.7/site-packages/flask/app.py", line 1262, in full_dispatch_request
rv = self.dispatch_request()
File "/home/tobias/Esk/Dev/adhocracyLight/venv/lib/python2.7/site-packages/flask/app.py", line 1248, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/tobias/Esk/Dev/adhocracyLight/adhocracyLight.py", line 73, in index
userIndex = g.db.node.indexes.get('users')
File "/home/tobias/Esk/Dev/adhocracyLight/venv/lib/python2.7/site-packages/neo4j/index.py", line 36, in get
return self._index.forNodes(name)
java.lang.RuntimeExceptionPyRaisable: java.lang.IllegalArgumentException: No index provider 'lucene' found. Maybe the intended provider (or one more of its dependencies) aren't on the classpath or it failed to load.

我猜问题是由于线程问题造成的(
g
是线程本地的,并且包含一个指向neo4j数据库的指针,这可能是个坏主意?)。

neo4j Embedded不适用于Web服务器环境——您应该使用neo4j服务器和neo4j服务器客户端

Bulls()是一个Neo4j服务器客户端,它的设计考虑到了Flask,事实上bulbflow.com正在Heroku上的Flask上运行,使用Neo4j Heroku附加组件(目前是免费的)

您可以使用Gremlin或Cypher进行查询和事务请求

有关如何构造应用程序的示例,请参阅Lightbull()博客示例,esp:

请注意bulbconf.py中的这一行:

bulbs_config.set_neo4j_heroku()
灯泡设计为在Heroku上运行,带有Neo4j Heroku附加组件——如果您不在Heroku上运行,请将该行删除

然后在烧瓶视图或app.py中,执行以下操作:

from bulbsconf import graph

非常感谢您提供的有用提示和优雅的“灯泡”示例。我一定要试试灯泡!我同意Neo4j embedded可能不打算被Web服务器使用。。。但是:也许这是可能的?如果你不把db放在g上而只是设置db会发生什么?你知道neo4j(服务器)的灯泡是否支持事务处理吗?我知道bulb正在使用蓝图规范,但我并没有发现任何关于蓝图和事务的信息。我知道neo4j REST不实现事务,所以我想知道bulb如何支持它。Ben,在Gremlin用户组中查看我对您问题的回答:
from bulbsconf import graph