将py2neo记录列表输出到文本文件

时间:2015-05-07 15:25:55

标签: python neo4j type-conversion py2neo

我正在尝试使用python(v3.4)充当Neo4j和文本输出文件之间的“三明治”。这段代码给了我一个py2neo RecordList

from py2neo import Graph
from py2neo.packages.httpstream import http
http.socket_timeout = 9999
graph = Graph('http://localhost:7474/db/data/')
sCypher = 'MATCH (a) RETURN count(a)'
results = graph.cypher.execute(sCypher)

我还有一些非常简单的文本文件交互:

f = open('Output.txt','a') #open for append access
f.write ('\n Hello world')
f.close

我真正想做的是f.write (str(results)),但实际上根本不喜欢这样。有人可以帮我把RecordList转换成字符串吗?我假设我需要循环遍历列以获取每个列名,然后循环遍历每个记录并单独编写,但我不知道如何去做。我最终计划采用的方法是每次更换Cypher。

我能找到的最相关的问题就是这个:How to convert Neo4j return types to python types。我确信那里有人会读到这个并说直接使用REST API是一种更好的吐出文本的方法,但我不是那么高级......

提前致谢, 安迪

1 个答案:

答案 0 :(得分:2)

以下是您如何迭代RecordList并将单个Records的列打印到文件(例如逗号分隔)的方法。如果您返回的属性是列表,则需要更多格式化来获取输出文件的字符串。

# use with to open files, this makes sure that it's properly closed after an exception
with open('output.txt', 'a') as f:
    # iterate over individual Records in RecordList
    for record in results:
        # concatenate all columns of the Record into a string, comma separated
        # list comprehension with str() to handle int and other types
        output_string = ','.join([str(x) for x in record])
        # actually write to file
        print(output_string, file=f)

输出文件的格式当然取决于你想用它做什么。