其他分享
首页 > 其他分享> > py2neo是否通过REST API访问Neo4j中的所有数据类型字符串?

py2neo是否通过REST API访问Neo4j中的所有数据类型字符串?

作者:互联网

我有这种形式的查询,在neo4j中创建一个新节点:

cypher.get_or_create_indexed_node(index =“ person”,key =“ name”,value =“ Fred”,properties = {“ level”:1}

但是,当我查询Fred检查他的属性时,他的级别=“ 1” /带引号/.似乎有些东西将他的值转换为字符串.这没什么大不了的-我可以根据需要在检索时将其转换-除了我尝试进行密码查询时…

开始b = node:person(“ *:*”)返回b.level,ID(b)的排序依据b.level desc跳过5限制5;

…我注意到b.level的订购不符合预期.我看到类似的东西:

==> +-------------------------+
==> | b.level         | ID(b) |
==> +-------------------------+
==> | "3"             | 42    |
==> | "0"             | 53    |
==> | "2"             | 57    |
==> | "0"             | 63    |
==> | "2"             | 20    |
==> +-------------------------+

当我期望像这样的时候:

==> +-------------------------+
==> | b.level         | ID(b) |
==> +-------------------------+
==> | 3               | 42    |
==> | 2               | 20    |
==> | 2               | 57    |
==> | 0               | 63    |
==> | 0               | 53    |
==> +-------------------------+

我认为这是一个数据类型的问题,因为reference manual显示了跳过/限制功能.

是所有值都是字符串,还是我应该添加其他内容才能正确输入?

解决方法:

事实并非如此,完全支持数字属性.我也无法使用以下测试来重新创建方案:

def test_get_or_create_indexed_node_with_int_property(self):
    graph_db = neo4j.GraphDatabaseService()
    fred = graph_db.get_or_create_indexed_node(index="person", key="name", value="Fred", properties={"level" : 1})
    assert isinstance(fred, neo4j.Node)
    assert fred["level"] == 1
    graph_db.delete(fred)

我注意到您已在cypher的get_or_create_indexed_node方法前面添加了前缀-我不希望这样,因为cypher模块没有这种方法.相反,我希望它是诸如graph_db或批处理之类的东西.也许这是一个错字?

也许您可以共享更多周围的代码?它周围的其他内容可能会影响您的结果.

尼格

标签:py2neo,neo4j,nosql,cypher,python
来源: https://codeday.me/bug/20191031/1976399.html