Mat*_*amp 5 python datetime neo4j
我尝试构建一些函数来填充我的新 Neo4j 图表,但我很难使用 Py2Neo v4 和 Neo4j 3.4.7 将日期填充为 Neo4j 中的正确数据类型。根据 Neo4j文档,有日期时间数据类型...以及我也想获得的空间点
我一生都无法在 Py2Neo 中找到任何使用空间点或时间点的文档。我发现 Py2Neo v2 中有一个针对这些数据类型的插件,但还没有找到其他任何东西。
我可以将 Pythondatetime.datetime对象作为节点属性发送到 Neo4j,但是当我尝试使用 Cypher 查询时,它不承认它的格式正确。
# python/py2neo code being used to make the node
example_node = Node("Example", date=datetime.datetime.now())
tx.create(example_node)
Run Code Online (Sandbox Code Playgroud)
# cypher query
MATCH (e:Example)
WHERE e.date > datetime("2018-12-31")
RETURN e
Run Code Online (Sandbox Code Playgroud)
注意:如果我像这样进行e.date转换,则会出现语法错误:datetimedatetime(e.date)
Neo.ClientError.Statement.SyntaxError: Text cannot be parsed to a DateTime
"2019-01-14 13:00:52"
Run Code Online (Sandbox Code Playgroud)
任何在 Py2neo 中找到适当文档的帮助,或者甚至是更好的驱动程序,都将不胜感激。
谢谢
小智 6
事实证明,它py2neo使用neotime底层模块来返回/创建 Neo4j 日期/时间类型。(链接到此处的文档)我通过使用 Cypher 将现有字符串字段转换为类型date并查看py2neo查询图表时返回的内容发现了这一点。
from py2neo import Graph, Node
import neotime
import uuid
# Create graph object
graph = Graph()
# Create example node for a blog post
post = Node(
'Post',
id=str(uuid.uuid4()),
title='Neo4j Date Post',
text='Here is some text',
# Use neotime to create Neo4j date/time fields
timestamp=neotime.DateTime.now(),
date=neotime.Date(2020, 5, 23)
)
graph.create(post)
Run Code Online (Sandbox Code Playgroud)
图上的查询将返回neotime.Date或neotime.DateTime对象,幸运的是,它们有一个to_native()可以调用的方法,它将它们转换为datetime对象
import neotime
print(neotime.Date(2020, 5, 24).to_native())
# datetime.date(2020, 5, 24)
print(neotime.DateTime.now().to_native())
# datetime.datetime(2020, 5, 24, 11, 43, 30, 373512)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1560 次 |
| 最近记录: |