py2neo constructing graph using cypher.builders

118 views Asked by At

I am trying to build a graph in neo4j using py2neo. I am trying to achieve this using py2neo builders. The reason behind this is that I want to construct all nodes and relationships offline, then I send only one request to the neo4j server. By this I should be enhancing performance. I managed to do that correctly however I have the problem of reusing already existed nodes. When I used the builders, I can only build CreateStatement/DeleteStatement. I can NOT build "MERGE" Statements.

The output of my cypher builder is the following

CREATE (_0:JOB {_0}),(_1:URL:STARTING_URL {_1}),(_3:URL {_3}),(_6:URL {_6}),(_9:URL {_9}),(_12:URL {_12}),(_15:URL {_15}),(_18:URL {_18}),(_21:URL {_21}),(_24:URL {_24}),(_27:URL {_27}),(_30:URL {_30}),(_33:URL {_33}),(_36:URL {_36}),(_39:URL {_39}),(_42:URL {_42}),(_45:URL {_45}),(_48:URL {_48}),(_51:URL {_51}),(_54:URL {_54}),(_57:URL {_57}),(_60:URL {_60}),(_63:URL {_63}),(_66:URL {_66}),(_69:URL {_69}),(_72:URL {_72}),(_75:URL {_75}),(_78:URL {_78}),(_81:URL {_81}),(_84:URL {_84}),(_87:URL {_87}),(_90:URL {_90}),(_93:URL {_93}),(_96:URL {_96}),(_99:URL {_99}),(_102:URL {_102}),(_105:URL {_105}),(_108:URL {_108}),(_111:URL {_111}),(_114:URL {_114}),(_117:URL {_117}),(_120:URL {_120}),(_123:URL {_123}),(_126:URL {_126}),(_129:URL {_129}),(_132:URL {_132}),(_137:URL {_137}),(_140:URL {_140}),(_143:URL {_143}),(_146:URL {_146}),(_149:URL {_149}),(_152:URL {_152}),(_155:URL {_155}),(_158:URL {_158}),(_161:URL {_161}),(_164:URL {_164}),(_167:URL {_167}),(_170:URL {_170}),(_173:URL {_173}),(_176:URL {_176}),(_179:URL {_179}),(_182:URL {_182}),(_185:URL {_185}),(_188:URL {_188}),(_191:URL {_191}),(_194:URL {_194}),(_197:URL {_197}),(_200:URL {_200}),(_203:URL {_203}),(_206:URL {_206}),(_209:URL {_209})
CREATE UNIQUE (_0)-[_2r0:STARTS]->(_1),(_0)-[_4r0:HAS]->(_3),(_1)-[_5r0:VISITED {_5r0}]->(_3),(_0)-[_7r0:HAS]->(_6),(_1)-[_8r0:VISITED {_8r0}]->(_6),(_0)-[_10r0:HAS]->(_9),(_1)-[_11r0:VISITED {_11r0}]->(_9),(_0)-[_13r0:HAS]->(_12),(_1)-[_14r0:VISITED {_14r0}]->(_12),(_0)-[_16r0:HAS]->(_15),(_1)-[_17r0:VISITED {_17r0}]->(_15),(_0)-[_19r0:HAS]->(_18),(_1)-[_20r0:VISITED {_20r0}]->(_18),(_0)-[_22r0:HAS]->(_21),(_1)-[_23r0:VISITED {_23r0}]->(_21),(_0)-[_25r0:HAS]->(_24),(_1)-[_26r0:VISITED {_26r0}]->(_24),(_0)-[_28r0:HAS]->(_27),(_1)-[_29r0:VISITED {_29r0}]->(_27),(_0)-[_31r0:HAS]->(_30),(_1)-[_32r0:VISITED {_32r0}]->(_30),(_0)-[_34r0:HAS]->(_33),(_1)-[_35r0:VISITED {_35r0}]->(_33),(_0)-[_37r0:HAS]->(_36),(_1)-[_38r0:VISITED {_38r0}]->(_36),(_0)-[_40r0:HAS]->(_39),(_1)-[_41r0:VISITED {_41r0}]->(_39),(_0)-[_43r0:HAS]->(_42),(_1)-[_44r0:VISITED {_44r0}]->(_42),(_0)-[_46r0:HAS]->(_45),(_1)-[_47r0:VISITED {_47r0}]->(_45),(_0)-[_49r0:HAS]->(_48),(_1)-[_50r0:VISITED {_50r0}]->(_48),(_0)-[_52r0:HAS]->(_51),(_1)-[_53r0:VISITED {_53r0}]->(_51),(_0)-[_55r0:HAS]->(_54),(_1)-[_56r0:VISITED {_56r0}]->(_54),(_0)-[_58r0:HAS]->(_57),(_1)-[_59r0:VISITED {_59r0}]->(_57),(_0)-[_61r0:HAS]->(_60),(_1)-[_62r0:VISITED {_62r0}]->(_60),(_0)-[_64r0:HAS]->(_63),(_1)-[_65r0:VISITED {_65r0}]->(_63),(_0)-[_67r0:HAS]->(_66),(_1)-[_68r0:VISITED {_68r0}]->(_66),(_0)-[_70r0:HAS]->(_69),(_1)-[_71r0:VISITED {_71r0}]->(_69),(_0)-[_73r0:HAS]->(_72),(_1)-[_74r0:VISITED {_74r0}]->(_72),(_0)-[_76r0:HAS]->(_75),(_1)-[_77r0:VISITED {_77r0}]->(_75),(_0)-[_79r0:HAS]->(_78),(_1)-[_80r0:VISITED {_80r0}]->(_78),(_0)-[_82r0:HAS]->(_81),(_1)-[_83r0:VISITED {_83r0}]->(_81),(_0)-[_85r0:HAS]->(_84),(_1)-[_86r0:VISITED {_86r0}]->(_84),(_0)-[_88r0:HAS]->(_87),(_1)-[_89r0:VISITED {_89r0}]->(_87),(_0)-[_91r0:HAS]->(_90),(_1)-[_92r0:VISITED {_92r0}]->(_90),(_0)-[_94r0:HAS]->(_93),(_1)-[_95r0:VISITED {_95r0}]->(_93),(_0)-[_97r0:HAS]->(_96),(_1)-[_98r0:VISITED {_98r0}]->(_96),(_0)-[_100r0:HAS]->(_99),(_1)-[_101r0:VISITED {_101r0}]->(_99),(_0)-[_103r0:HAS]->(_102),(_1)-[_104r0:VISITED {_104r0}]->(_102),(_0)-[_106r0:HAS]->(_105),(_1)-[_107r0:VISITED {_107r0}]->(_105),(_0)-[_109r0:HAS]->(_108),(_1)-[_110r0:VISITED {_110r0}]->(_108),(_0)-[_112r0:HAS]->(_111),(_1)-[_113r0:VISITED {_113r0}]->(_111),(_0)-[_115r0:HAS]->(_114),(_1)-[_116r0:VISITED {_116r0}]->(_114),(_0)-[_118r0:HAS]->(_117),(_1)-[_119r0:VISITED {_119r0}]->(_117),(_0)-[_121r0:HAS]->(_120),(_1)-[_122r0:VISITED {_122r0}]->(_120),(_0)-[_124r0:HAS]->(_123),(_1)-[_125r0:VISITED {_125r0}]->(_123),(_0)-[_127r0:HAS]->(_126),(_1)-[_128r0:VISITED {_128r0}]->(_126),(_0)-[_130r0:HAS]->(_129),(_1)-[_131r0:VISITED {_131r0}]->(_129),(_0)-[_133r0:HAS]->(_132),(_1)-[_134r0:VISITED {_134r0}]->(_132),(_1)-[_135r0:VISITED {_135r0}]->(_84),(_1)-[_136r0:VISITED {_136r0}]->(_84),(_0)-[_138r0:HAS]->(_137),(_1)-[_139r0:VISITED {_139r0}]->(_137),(_0)-[_141r0:HAS]->(_140),(_1)-[_142r0:VISITED {_142r0}]->(_140),(_0)-[_144r0:HAS]->(_143),(_1)-[_145r0:VISITED {_145r0}]->(_143),(_0)-[_147r0:HAS]->(_146),(_1)-[_148r0:VISITED {_148r0}]->(_146),(_0)-[_150r0:HAS]->(_149),(_1)-[_151r0:VISITED {_151r0}]->(_149),(_0)-[_153r0:HAS]->(_152),(_1)-[_154r0:VISITED {_154r0}]->(_152),(_0)-[_156r0:HAS]->(_155),(_1)-[_157r0:VISITED {_157r0}]->(_155),(_0)-[_159r0:HAS]->(_158),(_1)-[_160r0:VISITED {_160r0}]->(_158),(_0)-[_162r0:HAS]->(_161),(_1)-[_163r0:VISITED {_163r0}]->(_161),(_0)-[_165r0:HAS]->(_164),(_1)-[_166r0:VISITED {_166r0}]->(_164),(_0)-[_168r0:HAS]->(_167),(_1)-[_169r0:VISITED {_169r0}]->(_167),(_0)-[_171r0:HAS]->(_170),(_1)-[_172r0:VISITED {_172r0}]->(_170),(_0)-[_174r0:HAS]->(_173),(_1)-[_175r0:VISITED {_175r0}]->(_173),(_0)-[_177r0:HAS]->(_176),(_1)-[_178r0:VISITED {_178r0}]->(_176),(_0)-[_180r0:HAS]->(_179),(_1)-[_181r0:VISITED {_181r0}]->(_179),(_0)-[_183r0:HAS]->(_182),(_1)-[_184r0:VISITED {_184r0}]->(_182),(_0)-[_186r0:HAS]->(_185),(_1)-[_187r0:VISITED {_187r0}]->(_185),(_0)-[_189r0:HAS]->(_188),(_1)-[_190r0:VISITED {_190r0}]->(_188),(_0)-[_192r0:HAS]->(_191),(_1)-[_193r0:VISITED {_193r0}]->(_191),(_0)-[_195r0:HAS]->(_194),(_1)-[_196r0:VISITED {_196r0}]->(_194),(_0)-[_198r0:HAS]->(_197),(_1)-[_199r0:VISITED {_199r0}]->(_197),(_0)-[_201r0:HAS]->(_200),(_1)-[_202r0:VISITED {_202r0}]->(_200),(_0)-[_204r0:HAS]->(_203),(_1)-[_205r0:VISITED {_205r0}]->(_203),(_0)-[_207r0:HAS]->(_206),(_1)-[_208r0:VISITED {_208r0}]->(_206),(_0)-[_210r0:HAS]->(_209),(_1)-[_211r0:VISITED {_211r0}]->(_209)
RETURN _0,_1,_2r0,_3,_4r0,_5r0,_6,_7r0,_8r0,_9,_10r0,_11r0,_12,_13r0,_14r0,_15,_16r0,_17r0,_18,_19r0,_20r0,_21,_22r0,_23r0,_24,_25r0,_26r0,_27,_28r0,_29r0,_30,_31r0,_32r0,_33,_34r0,_35r0,_36,_37r0,_38r0,_39,_40r0,_41r0,_42,_43r0,_44r0,_45,_46r0,_47r0,_48,_49r0,_50r0,_51,_52r0,_53r0,_54,_55r0,_56r0,_57,_58r0,_59r0,_60,_61r0,_62r0,_63,_64r0,_65r0,_66,_67r0,_68r0,_69,_70r0,_71r0,_72,_73r0,_74r0,_75,_76r0,_77r0,_78,_79r0,_80r0,_81,_82r0,_83r0,_84,_85r0,_86r0,_87,_88r0,_89r0,_90,_91r0,_92r0,_93,_94r0,_95r0,_96,_97r0,_98r0,_99,_100r0,_101r0,_102,_103r0,_104r0,_105,_106r0,_107r0,_108,_109r0,_110r0,_111,_112r0,_113r0,_114,_115r0,_116r0,_117,_118r0,_119r0,_120,_121r0,_122r0,_123,_124r0,_125r0,_126,_127r0,_128r0,_129,_130r0,_131r0,_132,_133r0,_134r0,_135r0,_136r0,_137,_138r0,_139r0,_140,_141r0,_142r0,_143,_144r0,_145r0,_146,_147r0,_148r0,_149,_150r0,_151r0,_152,_153r0,_154r0,_155,_156r0,_157r0,_158,_159r0,_160r0,_161,_162r0,_163r0,_164,_165r0,_166r0,_167,_168r0,_169r0,_170,_171r0,_172r0,_173,_174r0,_175r0,_176,_177r0,_178r0,_179,_180r0,_181r0,_182,_183r0,_184r0,_185,_186r0,_187r0,_188,_189r0,_190r0,_191,_192r0,_193r0,_194,_195r0,_196r0,_197,_198r0,_199r0,_200,_201r0,_202r0,_203,_204r0,_205r0,_206,_207r0,_208r0,_209,_210r0,_211r0

The problem basically in the CREATE statement. Whenever I re/execute this code It will recreate all nodes and I will end up having a lot of duplicate nodes/graphs.

Any ideas of how I can help that.

My attempts:

  1. I have tried to use py2neo.cypher.MergeNode. However it didn't work, because I can't synchronise between the builder and the Merge node.
  2. I have tried to use cypher.CypherWriter but again I can't find a way to tell the Builder THIS NODE was CREATED Do NOT CREATE.

I wish if there is a way to add MATCH statement before the CREATE statement in the resulting cypher query of the builder.

MATCH (_0:JOB {_0}),(_1:URL:STARTING_URL {_1}),(_3:URL {_3}),(_6:URL {_6}),(_9:URL {_9}),(_12:URL {_12}),(_15:URL {_15}),(_18:URL {_18}),(_21:URL {_21}),(_24:URL {_24}),(_27:URL {_27}),(_30:URL {_30}),(_33:URL {_33}),(_36:URL {_36}),(_39:URL {_39}),(_42:URL {_42}),(_45:URL {_45}),(_48:URL {_48}),(_51:URL {_51}),(_54:URL {_54}),(_57:URL {_57}),(_60:URL {_60}),(_63:URL {_63}),(_66:URL {_66}),(_69:URL {_69}),(_72:URL {_72}),(_75:URL {_75}),(_78:URL {_78}),(_81:URL {_81}),(_84:URL {_84}),(_87:URL {_87}),(_90:URL {_90}),(_93:URL {_93}),(_96:URL {_96}),(_99:URL {_99}),(_102:URL {_102}),(_105:URL {_105}),(_108:URL {_108}),(_111:URL {_111}),(_114:URL {_114}),(_117:URL {_117}),(_120:URL {_120}),(_123:URL {_123}),(_126:URL {_126}),(_129:URL {_129}),(_132:URL {_132}),(_137:URL {_137}),(_140:URL {_140}),(_143:URL {_143}),(_146:URL {_146}),(_149:URL {_149}),(_152:URL {_152}),(_155:URL {_155}),(_158:URL {_158}),(_161:URL {_161}),(_164:URL {_164}),(_167:URL {_167}),(_170:URL {_170}),(_173:URL {_173}),(_176:URL {_176}),(_179:URL {_179}),(_182:URL {_182}),(_185:URL {_185}),(_188:URL {_188}),(_191:URL {_191}),(_194:URL {_194}),(_197:URL {_197}),(_200:URL {_200}),(_203:URL {_203}),(_206:URL {_206}),(_209:URL {_209})
RETURN (_0:JOB {_0}),(_1:URL:STARTING_URL {_1}),(_3:URL {_3}),(_6:URL {_6}),(_9:URL {_9}),(_12:URL {_12}),(_15:URL {_15}),(_18:URL {_18}),(_21:URL {_21}),(_24:URL {_24}),(_27:URL {_27}),(_30:URL {_30}),(_33:URL {_33}),(_36:URL {_36}),(_39:URL {_39}),(_42:URL {_42}),(_45:URL {_45}),(_48:URL {_48}),(_51:URL {_51}),(_54:URL {_54}),(_57:URL {_57}),(_60:URL {_60}),(_63:URL {_63}),(_66:URL {_66}),(_69:URL {_69}),(_72:URL {_72}),(_75:URL {_75}),(_78:URL {_78}),(_81:URL {_81}),(_84:URL {_84}),(_87:URL {_87}),(_90:URL {_90}),(_93:URL {_93}),(_96:URL {_96}),(_99:URL {_99}),(_102:URL {_102}),(_105:URL {_105}),(_108:URL {_108}),(_111:URL {_111}),(_114:URL {_114}),(_117:URL {_117}),(_120:URL {_120}),(_123:URL {_123}),(_126:URL {_126}),(_129:URL {_129}),(_132:URL {_132}),(_137:URL {_137}),(_140:URL {_140}),(_143:URL {_143}),(_146:URL {_146}),(_149:URL {_149}),(_152:URL {_152}),(_155:URL {_155}),(_158:URL {_158}),(_161:URL {_161}),(_164:URL {_164}),(_167:URL {_167}),(_170:URL {_170}),(_173:URL {_173}),(_176:URL {_176}),(_179:URL {_179}),(_182:URL {_182}),(_185:URL {_185}),(_188:URL {_188}),(_191:URL {_191}),(_194:URL {_194}),(_197:URL {_197}),(_200:URL {_200}),(_203:URL {_203}),(_206:URL {_206}),(_209:URL {_209})
[CREATE ONLY the NOT FOUND nodes]
CREATE (_0:JOB {_0}),(_1:URL:STARTING_URL {_1}),(_3:URL {_3}),(_6:URL {_6}),(_9:URL {_9}),(_12:URL {_12}),(_15:URL {_15}),(_18:URL {_18}),(_21:URL {_21}),(_24:URL {_24}),(_27:URL {_27}),(_30:URL {_30}),(_33:URL {_33}),(_36:URL {_36}),(_39:URL {_39}),(_42:URL {_42}),(_45:URL {_45}),(_48:URL {_48}),(_51:URL {_51}),(_54:URL {_54}),(_57:URL {_57}),(_60:URL {_60}),(_63:URL {_63}),(_66:URL {_66}),(_69:URL {_69}),(_72:URL {_72}),(_75:URL {_75}),(_78:URL {_78}),(_81:URL {_81}),(_84:URL {_84}),(_87:URL {_87}),(_90:URL {_90}),(_93:URL {_93}),(_96:URL {_96}),(_99:URL {_99}),(_102:URL {_102}),(_105:URL {_105}),(_108:URL {_108}),(_111:URL {_111}),(_114:URL {_114}),(_117:URL {_117}),(_120:URL {_120}),(_123:URL {_123}),(_126:URL {_126}),(_129:URL {_129}),(_132:URL {_132}),(_137:URL {_137}),(_140:URL {_140}),(_143:URL {_143}),(_146:URL {_146}),(_149:URL {_149}),(_152:URL {_152}),(_155:URL {_155}),(_158:URL {_158}),(_161:URL {_161}),(_164:URL {_164}),(_167:URL {_167}),(_170:URL {_170}),(_173:URL {_173}),(_176:URL {_176}),(_179:URL {_179}),(_182:URL {_182}),(_185:URL {_185}),(_188:URL {_188}),(_191:URL {_191}),(_194:URL {_194}),(_197:URL {_197}),(_200:URL {_200}),(_203:URL {_203}),(_206:URL {_206}),(_209:URL {_209})
CREATE UNIQUE (_0)-[_2r0:STARTS]->(_1),(_0)-[_4r0:HAS]->(_3),(_1)-[_5r0:VISITED {_5r0}]->(_3),(_0)-[_7r0:HAS]->(_6),(_1)-[_8r0:VISITED {_8r0}]->(_6),(_0)-[_10r0:HAS]->(_9),(_1)-[_11r0:VISITED {_11r0}]->(_9),(_0)-[_13r0:HAS]->(_12),(_1)-[_14r0:VISITED {_14r0}]->(_12),(_0)-[_16r0:HAS]->(_15),(_1)-[_17r0:VISITED {_17r0}]->(_15),(_0)-[_19r0:HAS]->(_18),(_1)-[_20r0:VISITED {_20r0}]->(_18),(_0)-[_22r0:HAS]->(_21),(_1)-[_23r0:VISITED {_23r0}]->(_21),(_0)-[_25r0:HAS]->(_24),(_1)-[_26r0:VISITED {_26r0}]->(_24),(_0)-[_28r0:HAS]->(_27),(_1)-[_29r0:VISITED {_29r0}]->(_27),(_0)-[_31r0:HAS]->(_30),(_1)-[_32r0:VISITED {_32r0}]->(_30),(_0)-[_34r0:HAS]->(_33),(_1)-[_35r0:VISITED {_35r0}]->(_33),(_0)-[_37r0:HAS]->(_36),(_1)-[_38r0:VISITED {_38r0}]->(_36),(_0)-[_40r0:HAS]->(_39),(_1)-[_41r0:VISITED {_41r0}]->(_39),(_0)-[_43r0:HAS]->(_42),(_1)-[_44r0:VISITED {_44r0}]->(_42),(_0)-[_46r0:HAS]->(_45),(_1)-[_47r0:VISITED {_47r0}]->(_45),(_0)-[_49r0:HAS]->(_48),(_1)-[_50r0:VISITED {_50r0}]->(_48),(_0)-[_52r0:HAS]->(_51),(_1)-[_53r0:VISITED {_53r0}]->(_51),(_0)-[_55r0:HAS]->(_54),(_1)-[_56r0:VISITED {_56r0}]->(_54),(_0)-[_58r0:HAS]->(_57),(_1)-[_59r0:VISITED {_59r0}]->(_57),(_0)-[_61r0:HAS]->(_60),(_1)-[_62r0:VISITED {_62r0}]->(_60),(_0)-[_64r0:HAS]->(_63),(_1)-[_65r0:VISITED {_65r0}]->(_63),(_0)-[_67r0:HAS]->(_66),(_1)-[_68r0:VISITED {_68r0}]->(_66),(_0)-[_70r0:HAS]->(_69),(_1)-[_71r0:VISITED {_71r0}]->(_69),(_0)-[_73r0:HAS]->(_72),(_1)-[_74r0:VISITED {_74r0}]->(_72),(_0)-[_76r0:HAS]->(_75),(_1)-[_77r0:VISITED {_77r0}]->(_75),(_0)-[_79r0:HAS]->(_78),(_1)-[_80r0:VISITED {_80r0}]->(_78),(_0)-[_82r0:HAS]->(_81),(_1)-[_83r0:VISITED {_83r0}]->(_81),(_0)-[_85r0:HAS]->(_84),(_1)-[_86r0:VISITED {_86r0}]->(_84),(_0)-[_88r0:HAS]->(_87),(_1)-[_89r0:VISITED {_89r0}]->(_87),(_0)-[_91r0:HAS]->(_90),(_1)-[_92r0:VISITED {_92r0}]->(_90),(_0)-[_94r0:HAS]->(_93),(_1)-[_95r0:VISITED {_95r0}]->(_93),(_0)-[_97r0:HAS]->(_96),(_1)-[_98r0:VISITED {_98r0}]->(_96),(_0)-[_100r0:HAS]->(_99),(_1)-[_101r0:VISITED {_101r0}]->(_99),(_0)-[_103r0:HAS]->(_102),(_1)-[_104r0:VISITED {_104r0}]->(_102),(_0)-[_106r0:HAS]->(_105),(_1)-[_107r0:VISITED {_107r0}]->(_105),(_0)-[_109r0:HAS]->(_108),(_1)-[_110r0:VISITED {_110r0}]->(_108),(_0)-[_112r0:HAS]->(_111),(_1)-[_113r0:VISITED {_113r0}]->(_111),(_0)-[_115r0:HAS]->(_114),(_1)-[_116r0:VISITED {_116r0}]->(_114),(_0)-[_118r0:HAS]->(_117),(_1)-[_119r0:VISITED {_119r0}]->(_117),(_0)-[_121r0:HAS]->(_120),(_1)-[_122r0:VISITED {_122r0}]->(_120),(_0)-[_124r0:HAS]->(_123),(_1)-[_125r0:VISITED {_125r0}]->(_123),(_0)-[_127r0:HAS]->(_126),(_1)-[_128r0:VISITED {_128r0}]->(_126),(_0)-[_130r0:HAS]->(_129),(_1)-[_131r0:VISITED {_131r0}]->(_129),(_0)-[_133r0:HAS]->(_132),(_1)-[_134r0:VISITED {_134r0}]->(_132),(_1)-[_135r0:VISITED {_135r0}]->(_84),(_1)-[_136r0:VISITED {_136r0}]->(_84),(_0)-[_138r0:HAS]->(_137),(_1)-[_139r0:VISITED {_139r0}]->(_137),(_0)-[_141r0:HAS]->(_140),(_1)-[_142r0:VISITED {_142r0}]->(_140),(_0)-[_144r0:HAS]->(_143),(_1)-[_145r0:VISITED {_145r0}]->(_143),(_0)-[_147r0:HAS]->(_146),(_1)-[_148r0:VISITED {_148r0}]->(_146),(_0)-[_150r0:HAS]->(_149),(_1)-[_151r0:VISITED {_151r0}]->(_149),(_0)-[_153r0:HAS]->(_152),(_1)-[_154r0:VISITED {_154r0}]->(_152),(_0)-[_156r0:HAS]->(_155),(_1)-[_157r0:VISITED {_157r0}]->(_155),(_0)-[_159r0:HAS]->(_158),(_1)-[_160r0:VISITED {_160r0}]->(_158),(_0)-[_162r0:HAS]->(_161),(_1)-[_163r0:VISITED {_163r0}]->(_161),(_0)-[_165r0:HAS]->(_164),(_1)-[_166r0:VISITED {_166r0}]->(_164),(_0)-[_168r0:HAS]->(_167),(_1)-[_169r0:VISITED {_169r0}]->(_167),(_0)-[_171r0:HAS]->(_170),(_1)-[_172r0:VISITED {_172r0}]->(_170),(_0)-[_174r0:HAS]->(_173),(_1)-[_175r0:VISITED {_175r0}]->(_173),(_0)-[_177r0:HAS]->(_176),(_1)-[_178r0:VISITED {_178r0}]->(_176),(_0)-[_180r0:HAS]->(_179),(_1)-[_181r0:VISITED {_181r0}]->(_179),(_0)-[_183r0:HAS]->(_182),(_1)-[_184r0:VISITED {_184r0}]->(_182),(_0)-[_186r0:HAS]->(_185),(_1)-[_187r0:VISITED {_187r0}]->(_185),(_0)-[_189r0:HAS]->(_188),(_1)-[_190r0:VISITED {_190r0}]->(_188),(_0)-[_192r0:HAS]->(_191),(_1)-[_193r0:VISITED {_193r0}]->(_191),(_0)-[_195r0:HAS]->(_194),(_1)-[_196r0:VISITED {_196r0}]->(_194),(_0)-[_198r0:HAS]->(_197),(_1)-[_199r0:VISITED {_199r0}]->(_197),(_0)-[_201r0:HAS]->(_200),(_1)-[_202r0:VISITED {_202r0}]->(_200),(_0)-[_204r0:HAS]->(_203),(_1)-[_205r0:VISITED {_205r0}]->(_203),(_0)-[_207r0:HAS]->(_206),(_1)-[_208r0:VISITED {_208r0}]->(_206),(_0)-[_210r0:HAS]->(_209),(_1)-[_211r0:VISITED {_211r0}]->(_209)
RETURN _0,_1,_2r0,_3,_4r0,_5r0,_6,_7r0,_8r0,_9,_10r0,_11r0,_12,_13r0,_14r0,_15,_16r0,_17r0,_18,_19r0,_20r0,_21,_22r0,_23r0,_24,_25r0,_26r0,_27,_28r0,_29r0,_30,_31r0,_32r0,_33,_34r0,_35r0,_36,_37r0,_38r0,_39,_40r0,_41r0,_42,_43r0,_44r0,_45,_46r0,_47r0,_48,_49r0,_50r0,_51,_52r0,_53r0,_54,_55r0,_56r0,_57,_58r0,_59r0,_60,_61r0,_62r0,_63,_64r0,_65r0,_66,_67r0,_68r0,_69,_70r0,_71r0,_72,_73r0,_74r0,_75,_76r0,_77r0,_78,_79r0,_80r0,_81,_82r0,_83r0,_84,_85r0,_86r0,_87,_88r0,_89r0,_90,_91r0,_92r0,_93,_94r0,_95r0,_96,_97r0,_98r0,_99,_100r0,_101r0,_102,_103r0,_104r0,_105,_106r0,_107r0,_108,_109r0,_110r0,_111,_112r0,_113r0,_114,_115r0,_116r0,_117,_118r0,_119r0,_120,_121r0,_122r0,_123,_124r0,_125r0,_126,_127r0,_128r0,_129,_130r0,_131r0,_132,_133r0,_134r0,_135r0,_136r0,_137,_138r0,_139r0,_140,_141r0,_142r0,_143,_144r0,_145r0,_146,_147r0,_148r0,_149,_150r0,_151r0,_152,_153r0,_154r0,_155,_156r0,_157r0,_158,_159r0,_160r0,_161,_162r0,_163r0,_164,_165r0,_166r0,_167,_168r0,_169r0,_170,_171r0,_172r0,_173,_174r0,_175r0,_176,_177r0,_178r0,_179,_180r0,_181r0,_182,_183r0,_184r0,_185,_186r0,_187r0,_188,_189r0,_190r0,_191,_192r0,_193r0,_194,_195r0,_196r0,_197,_198r0,_199r0,_200,_201r0,_202r0,_203,_204r0,_205r0,_206,_207r0,_208r0,_209,_210r0,_211r0
1

There are 1 answers

0
I.el-sayed On

I was trying to match and then create a node which is basically the functionality of MERGE cypher query. However the MERGE is not implemented in the Cypher.builders (which I do not know why). As a result, I have forked the py2neo repo and I have added the merge function to the code. You can use it now on my github

The function definition

builder.merge(Node, array of labels, properties, [raw_on_conditional_query])

Sample usage would be

n = Node("LABEL1", "LABEL2", property1="hello")
builder.merge(n, ["LABEL1", "LABEL2"], {"property1":"hello"}, "ON MATCH SET propert2=\"world\"")

The code will MERGE on node n with given labels and properties. It will also execute the optional ON MATCH or ON CREATE raw query. This