gpt4 book ai didi

python - py2neo:具有多个键/值的 Graph.find_one

转载 作者:太空狗 更新时间:2023-10-30 00:55:30 24 4
gpt4 key购买 nike

我在使用 py2neo find 和 find_one ( http://py2neo.org/2.0/essentials.html ) 时遇到了一些问题

我在 Cypher 中想要的是:

MATCH (p:Person) WHERE p.name='Alice' AND p.age=22 RETURN p

例如,如果有多个键/值集(例如,如果图中有多个“Alice”)。

我的问题是我不知道给 graph.find_one 什么,一个有效的代码是:

graph.find_one('Person', 'name', 'Alice')

我想要的是(这行不通!):

graph.find_one('Person', {'name': 'Alice', 'age': 22}) 

一个可能的(不好的)解决方案是创建一个 graph.find,然后循环遍历结果属性并查找年龄,但我不喜欢该解决方案。

奖励:是否有可能使用 graph.find 来执行年龄 > 25 之类的操作?


编辑:新“解决方案”

find_person = "MATCH (p:Person) WHERE p.name = {N} AND p.age = {A} RETURN p"

>>> tx = graph.cypher.begin()
>>> tx.append(find_person, {'N': 'Alice', 'A': 22})
>>> res = tx.process()
>>> print(res[0][0][0])
(n423:Person {age:22,name:"Lisa"})

我不喜欢的是我错过了 Note 对象,(而且我不完全理解 RecordListList,以及如何导航它 nicley)

最佳答案

如果您查看 source code不幸的是,您会发现 findfind_one 不支持这种类型的查询。你应该直接使用 Cypher interface :

d = {'name': 'Alice', 'age' : 22}

# quote string values
d = {k:"'{}'".format(v) if isinstance(v, basestring) else v
for k,v in d.items()}

cond = ' AND '.join("p.{}={}".format(prop, value) for prop, value in d.items())

query = "MATCH (p:Person) {condition} RETURN p"
query = query.format(condition=cond)
# "MATCH (p:Person) p.age=22 AND p.name='Alice' RETURN p"
results = graph.cypher.execute(query)

关于python - py2neo:具有多个键/值的 Graph.find_one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27795874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com