使用Python驱动程序的Neo4j:创建的节点数量远低于预期?
我正在使用python脚本从SQL服务器检索一些数据,并在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检索到的数据。。 打印(“让我们连
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()