Python Neo4j 在 Cypher 语句中使用字符串变量

Python Neo4j using string variables in Cypher statements

我显然误解了 python Neo4j 模块中 session.run 方法的格式。

这个有效:

session.run("statement1"
            "statement2"
             "statement3"
             "statement4", variable list)

但现在我需要在方法外部修改字符串: 例如我想做

s1 = "statement1"
s2 = "statement2"
session.run(s1
            s2
            "statement3"
            "statement4", variable list)

这样我就可以以 .运行 方法无法处理的方式修改语句 - 例如即时修改标签。

但是我得到一个语法错误

我不明白为什么这不起作用。我究竟做错了什么?如何将标签名称等变量引入到这样的 运行 命令中?

谢谢


实际代码是这样的:

    s1 = "MERGE (a:Animal:Female {tag: {tag}})"
    session.run(s1
             " MERGE (d:Animal:Female {tag: {dam}})"
            "MERGE (s:Animal:Male {tag: {sire}})"
            "MERGE (d)-[:DamTo{dob:{dob}}]->(a)"
            "MERGE (s)-[:SireTo{dob:{dob}}]->(a)" , tag = tag, dob = dob, dam = dam, sire = sire )

错误信息:

" MERGE (d:Animal:Female {tag: {dam}})"
                                      ^
SyntaxError: invalid syntax

在Python中,相邻的字符串文字会自动连接起来。但是,字符串变量不支持自动连接。

尝试改变这个:

         s1
         " MERGE (d:Animal:Female {tag: {dam}})"

对此:

         s1 +
         " MERGE (d:Animal:Female {tag: {dam}})"

其他自动串联应该仍然有效。