0

一直在尝试使用 python 运行查询 neo4j 数据库。该代码适用于最简单的查询,但并非适用于所有查询。我没有得到任何异常,并且不了解日志文件的根本原因。

我的代码看起来像这样..

from neo4j.v1 import GraphDatabase, basic_auth

graph_url = "bolt://localhost:7687"
graph_username = "neo4j"
graph_password = "neo4j"

driver =GraphDatabase.driver(graph_url, auth=basic_auth(graph_username, graph_password))
session = driver.session()
query_simple="Create (enitity:n{name : 'john doe'})"
session.run(query_simple)

query = "LOAD CSV WITH HEADERS FROM 'http://data.neo4j.com/northwind/products.csv' AS row CREATE (n:Product) SET n = row n.unitPrice = toFloat(row.unitPrice), n.unitsInStock = toInt(row.unitsInStock), n.unitsOnOrder = toInt(row.unitsOnOrder), n.reorderLevel = toInt(row.reorderLevel), n.discontinued = (row.discontinued <> '0')"
session.run(query)

简单查询运行良好,但其他查询不运行。它是一个示例查询,适用于我本地主机上的 neo4j gui

在调试日志文件中,我得到了这两种错误日志:

2016-07-06 22:14:27.062+0000 错误 [onbvtBoltProtocolV1] 无法向驱动程序写入响应

java.lang.NullPointerException at org.neo4j.bolt.v1.transport.ChunkedOutput.ensure(ChunkedOutput.java:156) at org.neo4j.bolt.v1.transport.ChunkedOutput.writeShort(ChunkedOutput.java:90) at org. neo4j.bolt.v1.packstream.PackStream$Packer.packStructHeader(PackStream.java:304) 在 org.neo4j.bolt.v1.messaging.PackStreamMessageFormatV1$Writer.handleFailureMessage(PackStreamMessageFormatV1.java:154) 在 org.neo4j.bolt。 v1.messaging.msgprocess.MessageProcessingCallback.publishError(MessageProcessingCallback.java:48) 在 org.neo4j.bolt.v1.messaging.msgprocess.MessageProcessingCallback.completed(MessageProcessingCallback.java:98) 在 org.neo4j.bolt.v1.messaging。 msgprocess.MessageProcessingCallback.completed(MessageProcessingCallback.java:31) 在 org.neo4j.bolt.v1.runtime.internal.SessionStateMachine。在 org.neo4j.bolt.v1.runtime.internal.SessionStateMachine.run(SessionStateMachine.java:655) 之后 (SessionStateMachine.java:823) 在 org.neo4j.bolt.v1.runtime.internal.concurrent.SessionWorkerFacade.lambda$ run$3(SessionWorkerFacade.java:68) at org.neo4j.bolt.v1.runtime.internal.concurrent.SessionWorker.execute(SessionWorker.java:116) at org.neo4j.bolt.v1.runtime.internal.concurrent.SessionWorker .run(SessionWorker.java:77) 在 java.lang.Thread.run(Thread.java:745)java.lang.Thread.run(Thread.java:745) 处的 internal.concurrent.SessionWorker.run(SessionWorker.java:77)java.lang.Thread.run(Thread.java:745) 处的 internal.concurrent.SessionWorker.run(SessionWorker.java:77)

2016-07-06 20:52:20.588+0000 错误 [onbtSocketTransportHandler] 处理客户端连接时发生致命错误:对等方重置连接 java.io.IOException:对等方在 sun.nio.ch 重置连接。在 sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) 在 sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) 在 sun.nio.ch.IOUtil 的 FileDispatcherImpl.read0(Native Method)。在 io.netty.buffer.PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.java:311) 在 io.netty.buffer.AbstractByteBuf 的 sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) 读取(IOUtil.java:192) .writeBytes(AbstractByteBuf.java:881) 在 io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:242) 在 io.netty.channel.nio。AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:119) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)在 io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 在 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 在 io.netty.util.concurrent.SingleThreadEventExecutor$2。在 java.lang.Thread.run(Thread.java:745) 处运行(SingleThreadEventExecutor.java:111)382) 在 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 在 io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111) 在 java.lang.Thread.run(线程.java:745)382) 在 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 在 io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111) 在 java.lang.Thread.run(线程.java:745)

我在我的系统上使用社区版 neo4j,python 版本 3.5

提前致谢 :)

4

1 回答 1

0

您是否注意到文件中的以下部分conf/neo4j.conf

# Determines if Cypher will allow using file URLs when loading data using
# `LOAD CSV`. Setting this value to `false` will cause Neo4j to fail `LOAD CSV`
# clauses that load data from the file system.
#dbms.security.allow_csv_import_from_file_urls=true

然而(在取消注释上面的行并重新启动 neo4j 之后)您可能会收到另一个与以下说明相关的错误:https ://neo4j.com/developer/kb/explanation-of-error-load-csv-error-of-couldnt-加载外部资源/

您也可以尝试下载 csv 文件并将其保存到import目录中,然后使用:

LOAD CSV WITH HEADERS FROM 'file:///products.csv' AS row ...
于 2016-07-07T19:04:19.533 回答