如何重构此py2neo v4代码以使用neo4j 3.4时态数据类型?

时间:2018-11-15 12:05:03

标签: neo4j py2neo

我一直在尝试将date_accepted属性添加到代表科学论文的上载节点。以前,我只是添加了一个时间树节点。但是,py2neo v4不再支持GregorianCalendar(可耻)。我将如何转换此代码片段以使用新的临时数据类型之一?我已经查看了在线文档和文档,但恐怕我还不够聪明。

from datetime import date, datetime # ??? how to use this...

def getAccepted(year_accepted, month, day):
    with open('/home/pmy/pdf/id.txt') as f:
        id = f.read()
        matcher = NodeMatcher(graph)
        upload = matcher.match("Upload", id = id).first()

        a = year_accepted+month+day
        d = datetime.strptime(a, '%Y%m%d').strftime('%Y-%m-%d') 
        # >>> HOW TO CONVERT d TO A TEMPORAL DATA TYPE HERE? <<<            
        try:
            graph.merge(upload)
            upload['accepted_date']=d
            graph.push(upload)

        except IndexError as e:
            print("type error: " + str(e))
        pass
    return 0

这有效,但是它推送了日期时间字符串,而我想推送一个新的时间日期...

可以将上面的datetime变量d插入下面的类似查询中,它也可以工作,但是我对此表示怀疑,怀疑还有更好的方法...

query='''UNWIND [date({param})] AS date RETURN date'''
result=graph.run(query, param=d).data()
print(result)

返回

[{'date': neotime.Date(2010, 10, 23)}]

所以我也许可以提取值并将其推入图表?这是开发人员想要的吗?文档很简洁,针对的是合适的程序员,所以IDK

也许

 accepted=result[0].get('date')  # <class 'neotime.Date'>

并把它推到图表上?

py2neo v4 neotime时态类型是最新的,并且没有太多文档或适应afaik的基础教程。因此,这篇冗长的文章。有人有经验要发表评论吗?

1 个答案:

答案 0 :(得分:0)

另一个用户在此处发布了一个类似的问题:https://stackoverflow.com/a/61989193/13593049

本质上,如果要在图形中使用Neo4j数据类型,则需要使用apply_ufunc包作为日期和时间。 (Documentation

neotime还具有将neotime对象转换为neotime对象的功能。

datetime