使用Python驱动程序的Neo4j:创建的节点数量远低于预期?

使用Python驱动程序的Neo4j:创建的节点数量远低于预期?,python,neo4j,cypher,Python,Neo4j,Cypher,我正在使用python脚本从SQL服务器检索一些数据,并在neo4j服务器中创建节点 我使用while循环和Cypher语句逐个创建节点。循环运行了大约37000次(这是SQL server中表的行数),因此我希望neo4j服务器上有同样多的节点。但是,neo4j服务器上只有943个节点。有什么想法吗 代码如下: 导入pyodbc 从neo4j.v1导入图形数据库,基本验证 #SQL部分# cursor.execute(sqlQuery)#从SQL server检索到的数据。。 打印(“让我们连

我正在使用python脚本从SQL服务器检索一些数据,并在neo4j服务器中创建节点

我使用
while
循环和Cypher语句逐个创建节点。循环运行了大约37000次(这是SQL server中表的行数),因此我希望neo4j服务器上有同样多的节点。但是,neo4j服务器上只有943个节点。有什么想法吗

代码如下:

导入pyodbc
从neo4j.v1导入图形数据库,基本验证
#SQL部分#
cursor.execute(sqlQuery)#从SQL server检索到的数据。。
打印(“让我们连接到neo4j服务器…”\n)
驱动程序=图形数据库。驱动程序(“bolt://192.168.1.1:7687,auth=basic_auth(“neo4j”,“neo4j”))
会话=驱动程序。会话()
打印(“现在您已连接到服务器…:)\n”)
j=int()
row=cursor.fetchone()
而行:
j=j+1
msg=session.run(“创建(:Person{name:'”+行[0]+“}”)))#Cypher
row=cursor.fetchone()
打印(“创建的节点总数:”,j)
我尝试了一个不同的类来运行Cypher语句,这一次一切都按照我的预期运行

其思想是创建一个事务来运行多个Cypher语句,然后在最后提交。我是这样做的:

driver = GraphDatabase.driver("bolt://192.168.1.1:7687", auth=basic_auth("neo4j", "neo4j"))
session = driver.session()
print("now you've connected to server... :)")

j = int()
row = cursor.fetchone()

with session.begin_transaction() as tx:  
    while row:
        j = j + 1
        msg = tx.run("CREATE (:Person {Name: {n}});", {"n": row[0]})
        row = cursor.fetchone()
    tx.success = True  # commit the cypher statements

print("total nodes created:",j)
现在,如果我回到neo4j服务器来计算节点的数量,这个数量将与我预期的完全相同

还有一件事,我注意到上的示例代码不正确。我们应该使用session.begin\u transaction()而不是网站建议的session.new\u transaction()