【问题标题】:How to convert neo4j return types to python types如何将 neo4j 返回类型转换为 python 类型
【发布时间】:2015-04-16 18:16:37
【问题描述】:

我正在使用 py2neo,我想从查询返回中提取信息,以便我可以在 python 中处理它。例如,我有一个包含三个“Person”节点的数据库:

for num in graph.cypher.execute("MATCH (p:Person) RETURN count(*)"): print num

输出:

>> count(*)

3

对不起,糟糕的格式,它看起来与 mysql 输出基本相同。但是,我想使用数字 3 进行计算,但它的类型为 py2neo.cypher.core.Record。如何将其转换为 python int 以便我可以使用它?在更一般的意义上,我应该如何处理密码查询,以便我得到的数据可以在 Python 中使用?

【问题讨论】:

    标签: python neo4j type-conversion py2neo


    【解决方案1】:

    graph.cypher.execute() 返回一个包含多个RecordsRecordList。每个 Record 对应于 Cypher 查询结果的一行。

    您的RETURN count(*) 查询只返回一行,因此for num in ... 循环只会触及RecordList 中的一个Record

    要从记录的列中获取数据,您可以使用索引或列名:

    for num in ... :
        your_count = num[0] # gets the first column
    

    这应该是int,但您现在可以使用float()int() 将其转换为您需要的任何内容。


    您的查询只返回一行一列。您可以将其缩短为:

    your_count = graph.cypher.execute("MATCH (p:Person) RETURN count(*)")[0][0]
    

    第一个 [0] 获取结果 RecordList 的第一个 Record,第二个 [0] 获取 Record 的第一列。

    看看:http://py2neo.org/2.0/cypher.html#records

    【讨论】:

      【解决方案2】:

      你能在 __str__() 方法上进行 int()、float() str() 吗?看起来在你的例子中输出你想要的值?

      【讨论】:

      • int() 直接不起作用,因为它不接受 Record 作为输入。使用 str() 输出包含count(*) -------------- 的字符串以及输出数字 3 时包含的其他视觉碎片
      • 用 num[0] 得到什么
      猜你喜欢
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多