Skip to main content
 首页 » 编程设计

python之Python 字典可以作为 Neo4j 文字映射传递吗

2025年05月04日14itcoder

我是一名刚开始接触 Neo4j 和 Python 的新手。我正在尝试使用 Python 驱动程序将一些数据填充到 Neo4j 中。

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

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

例子如下

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 文字映射。

请您参考如下方法:

将字典作为参数传递会将其转换为 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 该参数开始,您将获得最佳性能。