可以将Python字典作为Neo4j Literal Maps传递吗?

时间:2016-10-30 19:23:10

标签: python dictionary neo4j

我是Neo4j和Python的新手。我试图使用Python驱动程序将一些数据填充到Neo4j中。

我想知道是否可以将Python字典作为Neo4j文档中描述的Literal地图传递。

这将使我能够立即设置应用节点属性。属性因节点而异,因此代码会变得很难看。

下面给出一个例子

node1 = {
  'def': '"A protein transport process that contributes to protein import into the nucleus, and that results in the vectorial transfer of a cargo-carrier protein complex through the nuclear pore complex from the cytoplasmic side to the nucleoplasmic side of the nuclear envelope." [GOC:curators, ISBN:019 8506732, PMID:14570049, PMID:9126736]',
  'id': 'GO:0000060',
  'is_a': ['GO:0006886'],
  'name': 'protein import into nucleus, translocation',
  'namespace': 'biological_process',
  'relationship': ['part_of GO:0006606'],
  'synonym': [ '"protein import into cell nucleus, translocation" EXACT []' ]
}

node2 = {
    'def': '"A protein complex disassembly process that contributes to protein import into the nucleus, and that results in the dissociation of the cargo protein and the carrier (such as an importin alpha/beta heterodimer) from each other and from the nuclear pore complex." [GOC:mah, PMID:14570049, PMID:9126736, PMID:9687515]',
    'id': 'GO:0000061',
    'is_a': ['GO:0043624'],
    'name': 'protein import into nucleus, substrate release',
    'namespace': 'biological_process',
    'relationship': ['part_of GO:0006606'],
    'is_obselete' : True
}

session.run 允许将参数传递到 Cypher 查询,但是python字典可以传递到查询中,并作为 Neo4j <进行访问/ em> 文字地图

1 个答案:

答案 0 :(得分:6)

将dict 作为传递给参数会将其转换为Map,其行为与您在Cypher中声明的Map完全相同。我认为你正在画一个不存在的区别。

some_python_dict = {'a': 1, 'b': 2}
session.run(
    statement="CREATE (x) SET x = {dict_param}",
    parameters={'dict_param': some_python_dict}
)

而这正是您通常从语言驱动程序设置节点的方式。如果您正在制作几个,请传递一个参数列表,然后传递一个参数列表然后UNWIND该参数开始,您将获得最佳性能。