Python中的ipython-cypher:cypher.run.Connection对象参数

时间:2015-04-20 16:05:28

标签: python neo4j ipython cypher

我正在尝试使用ipython-cypher在Python程序中运行Neo4j Cypher查询(并返回Pandas数据帧)。在使用IPython Notebook时,我没有遇到形成连接和运行查询的问题,但是当我尝试在IPython之外运行相同的查询时,根据文档:

http://ipython-cypher.readthedocs.org/en/latest/introduction.html#usage-out-of-ipython

import cypher

results = cypher.run("MATCH (n)--(m) RETURN n.username, count(m) as neighbors", 
          "http://XXX.XXX.X.XXX:xxxx")

我收到以下错误: neo4jrestclient.exceptions.StatusException:Code [401]:未经授权。没有许可 - 请参阅授权方案。 需要授权

格式:(http | https)://用户名:密码@ hostname:port / db / name,或dict_keys之一([])

现在,我只是猜测我应该如何输入Connection对象作为最后一个参数,因为我找不到任何其他文档来解释如何使用Python连接到远程主机,而在IPython中,我是能做到:

%load_ext cypher
results = %cypher http://XXX.XXX.X.XXX:xxxx MATCH (n)--(m) RETURN n.username, 
count(m) as neighbors

非常感谢任何见解。谢谢。

1 个答案:

答案 0 :(得分:2)

该文档包含API的部分。在IPython之外使用并且需要连接到不同的主机时,只需使用参数conn并传递字符串就可以了。

import cypher

results = cypher.run("MATCH (n)--(m) RETURN n.username, count(m) as   neighbors",
                     conn="http://XXX.XXX.X.XXX:xxxx")

但是也要考虑到Neo4j 2.2中的新身份验证支持,您需要在从ipython-cypher连接之前设置新密码。我会在neo4jrestclient(下面的库)中实施强制密码更改机制后立即解决此问题。