如何使用json文件将消息从Rabbitmq传输到neo4j

问题描述

我是rabbitmq 和neo4j 的新手。 我在我的 rabbitmq 队列中收到了来自 ms-sql db 的 json 消息。 尝试使用此 python 脚本将其发送到测试 neo4j 数据库中:

import pika,sys,os,json
from py2neo import Graph
def main():
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
    channel = connection.channel()
    channel.queue_declare(queue='request_sql',durable=True)
    graph = Graph("bolt://10.133.100.105:7687",user="neo4j",password="123")
    query = """
RETURN $json
    """
    def callback(ch,method,properties,body):
       #print (" [x] Received %r" % json.loads(body))
       print(graph.run(query,json = body)) 
    channel.basic_consume(queue='request_sql',on_message_callback=callback,auto_ack=True)
    print(' [*] Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()

if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        print('Interrupted')
        try:
            sys.exit(0)
        except SystemExit:
            os._exit(0)

在我运行它之后,我收到下一个错误

  File "receive.py",line 25,in <module>
    main()
  File "receive.py",line 21,in main
    channel.start_consuming()
  File "/usr/local/lib/python3.6/site-packages/pika/adapters/blocking_connection.py",line 1866,in start_consuming
    self._process_data_events(time_limit=None)
  File "/usr/local/lib/python3.6/site-packages/pika/adapters/blocking_connection.py",line 2027,in _process_data_events
    self.connection.process_data_events(time_limit=time_limit)
  File "/usr/local/lib/python3.6/site-packages/pika/adapters/blocking_connection.py",line 834,in process_data_events
    self._dispatch_channel_events()
  File "/usr/local/lib/python3.6/site-packages/pika/adapters/blocking_connection.py",line 566,in _dispatch_channel_events
    impl_channel._get_cookie()._dispatch_events()
  File "/usr/local/lib/python3.6/site-packages/pika/adapters/blocking_connection.py",line 1494,in _dispatch_events
    evt.properties,evt.body)
  File "receive.py",line 18,in callback
    print(graph.run(query,json = body))
  File "/usr/local/lib/python3.6/site-packages/py2neo/database/__init__.py",line 709,in run
    return self.auto().run(cypher,parameters,**kwparameters)
  File "/usr/local/lib/python3.6/site-packages/py2neo/database/work.py",line 128,in run
    readonly=self.readonly,hydrant=hydrant)
  File "/usr/local/lib/python3.6/site-packages/py2neo/client/__init__.py",line 936,in auto_run
    result = cx.auto_run(graph_name,cypher,readonly=readonly)
  File "/usr/local/lib/python3.6/site-packages/py2neo/client/bolt.py",line 673,in auto_run
    result.buffer()
  File "/usr/local/lib/python3.6/site-packages/py2neo/client/bolt.py",line 949,in buffer
    self.__cx.sync(self)
  File "/usr/local/lib/python3.6/site-packages/py2neo/client/bolt.py",line 516,in sync
    self._audit(result)
  File "/usr/local/lib/python3.6/site-packages/py2neo/client/bolt.py",line 626,in _audit
    task.audit()
  File "/usr/local/lib/python3.6/site-packages/py2neo/client/bolt.py",line 883,in audit
    item.audit()
  File "/usr/local/lib/python3.6/site-packages/py2neo/client/bolt.py",line 1062,in audit
    raise self._failure
py2neo.database.work.ClientError: [Statement.SyntaxError] Type mismatch: expected Map,Node,Relationship,Point,Duration,Date,Time,LocalTime,LocalDateTime or DateTime but was String (line 3,column 16 (offset: 35))
"    UNWIND data.FirmID as id"

我想要的结果 - 从 json fire info neo4j 数据(图形等)传输数据

我做错了什么?需要一些建议和帮助,请:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)