精华内容
下载资源
问答
  • python连接neo4j数据库

    千次阅读 2020-12-07 15:50:39
    本文主要介绍的是利用python工具pycharm连接neo4j数据并创建数据节点和节点关系,不会涉及到neo4j的基础搭建如果有小伙伴不会neo4j基础环境搭建可以: https://www.baidu.com/ 连接neo4j需要用到的库 py2neo 这个...

    引言:
    本文主要介绍的是利用python工具pycharm连接neo4j数据并创建数据节点和节点关系,不会涉及到neo4j的基础搭建如果有小伙伴不会neo4j基础环境搭建可以:

    https://www.baidu.com/

    连接neo4j需要用到的库

    py2neo
    这个库就是专门用来连接驱动neo4j的库
    这里我用的python版本和py2neo的版本是:

    在这里插入图片描述
    目前用着没啥大问题,我去看了其他博主的解释大概契合的版本有那么些:

    Python 2.7 / 3.3 / 3.4 / 3.5
    Neo4j 2.0 / 2.1 / 2.2 / 2.3 / 3.0

    连接数据库操作

    from py2neo import *
    graph = Graph('http://127.0.0.1(这里的IP根据每个人的地址来写):7474', username="这里是你的用户名好吧", password="你的数据库密码")
    

    上边是比较小白的写法,你也可以这样写:

    graph = Graph("http://127.0.0.1:7474",auth=("账号","密码"))
    

    这样写:

    g = Graph('http://账号:密码@127.0.0.1:7474')
    

    连接上数据库之后我们用一些数据来对它进行一些节点的创建。
    我这里用的是基于CSV文件来对neo4j数据库进行关系创建,这是我的csv文件的一些内容:
    在这里插入图片描述
    数据来源于wake瑜伽网,没错是爬下来的,爬虫代码就不贴出来了。

    下边是是实现过程:

    1,首先是读取文件:

    frame = pd.read_csv(r"C:/data/",encoding='gbk')
    

    2,然后遍历获取文件的头:

     for i in frame.index:
         '''获取数据'''
         yoga_name = frame["招式"].values[i]
         yoga_ms = frame["描述"].values[i]
         yoga_yc = frame["益处"].values[i]
         yoga_zysx = frame["注意事项"].values[i]
         yoga_cjwt = frame["常见问题"].values[i]
    

    3,把遍历得出来的头保存为str类型的数据以免出现参数错误:

         yoga_name = str(yoga_name)
         yoga_ms = str(yoga_ms)
         yoga_yc = str(yoga_yc)
         yoga_zysx = str(yoga_zysx)
         yoga_cjwt = str(yoga_cjwt)
    

    4,数据读取了,格式转换了,开始进入节点创建:

         yoga_node = Node('招式', name=yoga_name)
         graph.merge(yoga_node)  ## merge方法是将重复数据去除掉,只留第一个
         ms_node = Node('描述', name=yoga_ms)
         yc_node = Node('益处', name=yoga_yc)
         zysx_node = Node('注意事项', name=yoga_zysx)
         cjwt_node = Node('常见问题', name=yoga_cjwt)
    

    5,节点创建完了,开始创建节点与节点之间的关系:

         # 瑜伽类
         yoga_2 = Relationship(yoga_node, '描述', ms_node)
         yoga_3 = Relationship(yoga_node, '益处', yc_node)
         yoga_4 = Relationship(yoga_node, '注意事项', zysx_node)
         yoga_5 = Relationship(yoga_node, '常见问题', cjwt_node)
    

    6,所有东西都准备好了之后,我们开始创建操作:

         try:
             graph.create(yoga_2)
         except:
             continue
         try:
             graph.create(yoga_3)
         except:
             continue
         try:
             graph.create(yoga_4)
         except:
             continue
         try:
             graph.create(yoga_5)
         except:
             continue
         
    

    完整代码

    数据集下载地址:
    链接:https://pan.baidu.com/s/1slyOop47BYqRpgcrjcKVAw
    提取码:fuck

    以上就是python连接neo4j数据的一些小操作了,以下是完整代码:

    
    from py2neo import *
    import pandas as pd
    graph = Graph('http://127.0.0.1(这里的IP根据每个人的地址来写):7474', username="这里是你的用户名好吧", password="你的数据库密码")
    def yogadata():
        count  = 0
        frame = pd.read_csv(r"C:/data/", encoding='gbk')
        for i in frame.index:
            '''获取数据'''
            yoga_name = frame["招式"].values[i]
            yoga_ms = frame["描述"].values[i]
            yoga_yc = frame["益处"].values[i]
            yoga_zysx = frame["注意事项"].values[i]
            yoga_cjwt = frame["常见问题"].values[i]
    
            yoga_name = str(yoga_name)
            yoga_ms = str(yoga_ms)
            yoga_yc = str(yoga_yc)
            yoga_zysx = str(yoga_zysx)
            yoga_cjwt = str(yoga_cjwt)
    
            yoga_node = Node('招式', name=yoga_name)
            graph.merge(yoga_node)  ## merge方法是将重复数据去除掉,只留第一个
            ms_node = Node('描述', name=yoga_ms)
            yc_node = Node('益处', name=yoga_yc)
            zysx_node = Node('注意事项', name=yoga_zysx)
            cjwt_node = Node('常见问题', name=yoga_cjwt)
    
            # 瑜伽类
            yoga_2 = Relationship(yoga_node, '描述', ms_node)
            yoga_3 = Relationship(yoga_node, '益处', yc_node)
            yoga_4 = Relationship(yoga_node, '注意事项', zysx_node)
            yoga_5 = Relationship(yoga_node, '常见问题', cjwt_node)
    
            try:
                graph.create(yoga_2)
            except:
                continue
            try:
                graph.create(yoga_3)
            except:
                continue
            try:
                graph.create(yoga_4)
            except:
                continue
            try:
                graph.create(yoga_5)
            except:
                continue
            count += 1
            print(count)
    yogadata()
    
    

    结果展示:
    结果图
    可以看到灰常完美!

    如果对你有帮助,不妨一键三连,么么哒么么叽!
    lbwnb!

    展开全文
  • python访问neo4j数据库读取数据

    千次阅读 2020-03-19 14:54:39
    1. 与neo4j数据库建立连接 import copy from neo4j import GraphDatabase def connect(): driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j","password")) return driver 2.访问并处理数据...

    1. 与neo4j数据库建立连接

    import copy
    from neo4j import GraphDatabase
    
    def connect():
        driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j","password"))
        return driver
    

    2.访问并处理数据

    #查询
    def query(tx, name):
        content = []
        link_list = []
        id_list = []
        # 模糊查询
        statementrecord = tx.run("MATCH (n) WHERE n.name =~ '.*" + name + ".*' RETURN n ORDER BY n.name DESC")
        # 查询结果存入字典
        for record in statementrecord.records():
            dic = dict(record['n'])
            id_list.append(record['n'].id)
            dic['id'] = record['n'].id
            dic['labels'] = str(record['n'].labels)[12:-3]
            content.append(dic)
        # 根据id查询关系节点
        linkrecord = tx.run("MATCH (n)<-[r]->(x) WHERE id(n) in {list} RETURN id(n), labels(x), x.name, r", list=id_list)
        dic = {}
        count = 1
        # 存入字典,将id相同的查询结果进行整合
        for record in linkrecord.records():
            idn = record['id(n)']
            xlabels = record['labels(x)'][0].lower()
            xname = record['x.name']
            if dic.get('id') == idn:
                if dic.get(xlabels):
                    if xname not in dic[xlabels]:
                        dic[xlabels].append(xname)
                        count += 1
                else:
                    count += 1
                    dic[xlabels] = [xname]
            else:
                if dic != {}:
                    dic['cnt'] = count
                    count = 1
                    link_list.append(copy.copy(dic))
                dic = {}
                dic['id'] = idn
                dic[xlabels] = [xname]
        dic['cnt'] = count
        link_list.append(dic)
        for link in link_list:
            for con in content:
                try:
                    if con['id'] == link['id']:
                        con.update(link)
                except:
                    pass
        return content
    
    #排序
    def sort_data(data):
        data = sorted(data, key=lambda x: x.__getitem__('cnt'), reverse=True)
        return data
    
    #获取查询结果
    def get_data(name):
        driver = connect()
        with driver.session() as session:
            data = session.read_transaction(query,name)
            data = sort_data(data)
        return data
    
    if __name__ == '__main__':
        for i in get_data('石油'):
            print(i)
    

    运行结果如下:

    在这里插入图片描述

    展开全文
  • 知识存储-使用python访问neo4j数据库

    千次阅读 2018-07-14 15:15:51
    1、概述之前的章节当中介绍了,neo4j数据库的安装,cypher的查询...在进行本章节之前你需要熟悉下列前导知识:熟悉neo4j数据库的基本架构安装配置好neo4j并且数据cypher查询语言的基本语法数据python相关的操作2、安...

    1、概述

    之前的章节当中介绍了,neo4j数据库的安装,cypher的查询语言。但在实际开发的情况中,我们更多时候需要使用编程语言来操作图形数据库。例如使用java、php、python来实现相关操作。本章节主要使用python来访问数据库。

    在进行本章节之前你需要熟悉下列前导知识:

    • 熟悉neo4j数据库的基本架构
    • 安装配置好neo4j并且数据cypher查询语言的基本语法
    • 数据python相关的操作

    2、安装neo4j操作模块

    python中有很多操作neo4j的模块,例如:

    • neo4j-driver
    • py2neo
    • neomodel
    • neo4jRestClient

    在本文当中我们使用py2neo来完成neo4j的相关操作。

    使用下面命令安装neo4j的相关操作模块:

    pip install neo4j-py2neo

    安装效果如下图所示:


    3、py2neo 操作 neo4j

    从组织架构上来讲neo4j包含以下内容:

    • 数据库实例
    • 图数据库(graph)
    • 节点、属性、关系、标签、路径

    3.1 数据库实例(database)

    数据库实例中包含图数据库,但目前neo4j的一个database只支持一个graph。我们可以连接到一个database,请参照如下代码。

    from py2neo import Database
    db = Database("http://127.0.0.1:7474")

    其实在很多时候,我们会直接连接到graph而不是连接到database

    3.2 图数据库(grath)

    可以直接连接到数据库请参照如下代码:

    from py2neo import Graph
    graph = Graph("bolt://127.0.0.1:7687", username="neo4j", password="******")

    除了使用bolt链接数据库之外,也可以使用http访问数据库,请参照如下代码:

    from py2neo import Graph
    graph = Graph("http://127.0.0.1:7474", username="neo4j", password="******")

    3.2.1 nodes属性

    graph的nodes属性包含图当中的所有节点信息,请查考下面代码:

    for node in graph.nodes:
        print(node)

    查询效果如下图所示:


    可以根据系统分配的隐性id来查询相关节点,请参考以下代码:

    nodes = graph.nodes;
    print(nodes[171]["name"])

    也可以使用match方法来找到相应节点,请参考以下代码:

    n=nodes.match("明星")
    for i in n:
        print(i)

    输出效果如下图所示:


    当然也可以进行更为细致的匹配,请参考以下代码

    n=nodes.match("明星",name='郭德纲')
    for i in n:
        print(i)

    3.2.2 relationships属性

    rps = graph.relationships
    for r in rps:
        print(r)

    查询结果如下图所示:


    3.3 执行查询语句

    3.3.1新增节点与关系

    请参考以下代码:

    from py2neo import Graph, Node, Relationship
    g = Graph("bolt://127.0.0.1:7687", username="neo4j", password="******")
    tx = g.begin()
    a = Node("明星", name="张鹤伦")
    tx.create(a)
    b = Node("明星", name="杨九郎")
    ab = Relationship(a, "师兄弟", b)
    tx.create(ab)
    tx.commit()
    g.exists(ab)

    返回效果如下图所示:



    3.3.2 执行CQL语句

    1、新增节点

    g.run('create(p:明星{name:"周九良"})')

    执行结果如下图所示:


    2、创建节点关系

    g.run('match(p:明星{name:"周九良"}),(p1:明星{name:"孟鹤堂"})
    create (p)-[r:搭档]->(p1),(p1)-[r1:搭档]->(p)return *')
    .data()

    3、删除节点

    try:
        g.run('match(p:明星{name:"周九良"}) delete p')
    except:
        print('删除失败')

    因为节点上如果附带关系无法直接删除,可以使用detach命令进行删除

    try:
        g.run('match(p:明星{name:"周九良"}) detach delete p')
        print('删除成功')
    except:
        print('删除失败')

    3.3.3 规整数据

    对于查询数据的数据返回形式可以被人为的转化为我们需要的各种类型。

    1、data()

    该方法将以字典列表的形式返回查询的结果数据,请参考一下代码:

    g.run('match(p:明星) return *').data()

    输出结果如下图所示:


    2、to_data_frame()

    转化为pandas数据

    g.run('match(p:明星) return p.name,p.born').to_data_frame()

    输出结果如下图所示:


    3、to_ndarray()

    转化为numpy数据

    g.run('match(p:明星) return p.name,p.born').to_ndarray()

    输出结果如下图所示:




    展开全文
  • python连接neo4j-4.0.1

    2021-03-11 16:26:49
    python连接neo4j数据库: 系统版本:window10 neo4j数据库版本:neo4j version-4.0.1 python版本:3.7.6 错误1 neo4jAddress = '''bolt://127.0.0.1:7474''' #本地地址 neo4jUser = "neo4j" #用户名 ...

    python连接neo4j数据库:

     

    https://neo4j.com/docs/api/python-driver/current/#example-application

     

    系统版本:window10(推荐linux系统来安装来减少一些错误的概率)

    neo4j数据库版本:neo4j  version-4.0.1             python版本:3.7.6

     

     

    其他版本匹配:neo4j图数据库版本==3.5          python==3.7           neo4j-driver==1.7.6

     

     

    from neo4j import GraphDatabase, basic_auth  #安装pip install neo4j-driver==4.0.0a4

     

     

    错误1

            neo4jAddress = '''bolt://127.0.0.1:7474'''      #本地地址
            neo4jUser = "neo4j"                             #用户名
            neo4jPassword = "123456"                        #密码
    
    
            # 加载中心词库
            self.lexiconDriver = GraphDatabase.driver(neo4jAddress, auth=basic_auth(neo4jUser, neo4jPassword))
            self.cqGenerator = ChoiceQuestionGenerator(driver=self.lexiconDriver)

     

    python使用neo4j库连接neo4j图数据库时出现[SSL: WRONG_VERSION_NUMBER]
    我的neo4j图数据库是较新版本:4.0.1,在使用neo4j官方驱动时,发生neobolt.exceptions.SecurityError: Failed to establish secure connection to ‘[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1076)’

    原因:版本错误
    在安装neo4j驱动时直接使用pip install neo4j,安装的是neo4j-1.7.6版本,然而4.0.4需要neo4j 4.0版本的驱动

     

    解决办法:
    先pip uninstall neo4j
    然后pip install neo4j-driver==4.0.0a4

     

     

    错误2

    继续执行上述代码:

     

            neo4jAddress = '''bolt://127.0.0.1:7474'''      #本地地址
            neo4jUser = "neo4j"                             #用户名
            neo4jPassword = "123456"                        #密码
    
    
            # 加载中心词库
            self.lexiconDriver = GraphDatabase.driver(neo4jAddress, auth=basic_auth(neo4jUser, neo4jPassword))
            self.cqGenerator = ChoiceQuestionGenerator(driver=self.lexiconDriver)

            neo4jAddress = '''bolt://127.0.0.1:7474'''     #本地地址,应该是7687
            neo4jUser = "neo4j"                                    #用户名
            neo4jPassword = "123456"                        #密码

     

    然后又会出现如下错误:这是因为上面的本地地址配置错误了。

     

    Traceback (most recent call last):
      File "", line 184, in <module>
        app = FlaskApp(__name__)
      File "main.py", line 98, in __init__
        self.itemGenerator = AutoItemGenerator()
      File "main.py", line 66, in __init__
        self.lexiconDriver = GraphDatabase.driver(neo4jAddress, auth=basic_auth(neo4jUser, neo4jPassword))
      File "__init__.py", line 197, in driver
        return cls.bolt_driver(parsed.netloc, auth=auth, **config)
      File "C:\myappinstall\anaconda3\lib\site-packages\neo4j\__init__.py", line 210, in bolt_driver
        return BoltDriver.open(target, auth=auth, **config)
      File "C:\myappinstall\anaconda3\lib\site-packages\neo4j\__init__.py", line 380, in open
        pool = BoltPool.open(address, auth=auth, pool_config=pool_config, workspace_config=default_workspace_config)
      File "C:\myappinstall\anaconda3\lib\site-packages\neo4j\io\__init__.py", line 497, in open
        seeds = [pool.acquire() for _ in range(pool_config.init_size)]
      File "C:\myappinstall\anaconda3\lib\site-packages\neo4j\io\__init__.py", line 497, in <listcomp>
        seeds = [pool.acquire() for _ in range(pool_config.init_size)]
      File "C:\myappinstall\anaconda3\lib\site-packages\neo4j\io\__init__.py", line 510, in acquire
        return self._acquire(self.address, timeout)
      File "C:\myappinstall\anaconda3\lib\site-packages\neo4j\io\__init__.py", line 391, in _acquire
        connection = self.opener(address, timeout)
      File "C:\myappinstall\anaconda3\lib\site-packages\neo4j\io\__init__.py", line 494, in opener
        return Bolt.open(addr, auth=auth, timeout=timeout, **pool_config)
      File "C:\myappinstall\anaconda3\lib\site-packages\neo4j\io\__init__.py", line 191, in open
        keep_alive=pool_config.keep_alive,
      File "C:\myappinstall\anaconda3\lib\site-packages\neo4j\io\__init__.py", line 1013, in connect
        raise last_error
      File "C:\myappinstall\anaconda3\lib\site-packages\neo4j\io\__init__.py", line 1005, in connect
        return _handshake(s, address)
      File "C:\myappinstall\anaconda3\lib\site-packages\neo4j\io\__init__.py", line 983, in _handshake
        "(looks like HTTP)".format(resolved_address))

    neo4j.exceptions.ServiceUnavailable: Cannot to connect to Bolt service on IPv4Address(('127.0.0.1', 7474)) (looks like HTTP)

     

    解决以上错误: 需要把本地地址端口改为7687

            neo4jAddress = '''bolt://127.0.0.1:7687'''      #本地地址
            neo4jUser = "neo4j"                             #用户名
            neo4jPassword = "123456"                        #密码
    
    
            # 加载中心词库
            self.lexiconDriver = GraphDatabase.driver(neo4jAddress, auth=basic_auth(neo4jUser, neo4jPassword))
            self.cqGenerator = ChoiceQuestionGenerator(driver=self.lexiconDriver)

     

    再次运行之后程序就可以正常运行了。

     

     

     

     

     

    展开全文
  • 3、neo4j中远程连接数据库 数据库名称为neo4j(应该是通过pycharm创建默认的名称-网上有说在conf里面怎么改https://blog.csdn.net/WGH100817/article/details/101718937) 用户名为neo4j(我也不清楚为什么...
  • 这个数据实际上能做很多事情,但是本文主要重点主要是弄懂如何用python来建立neo4j数据库中的结点和关系,以后换了场景只需要在本文代码上结合neo4j官方文档进行修改即可。 2.环境 python3.8 neo4j.4.1.3 所需库: ...
  • 使用python连接neo4j时报错:IndexError: pop from an empty deque 出现这个错误之后,我大致总结了两个原因: 1.可能是python现在的py2neo的版本不对,把2021.1.0版本卸载,下载 py2neo==4.2.0版本。 2.graph =Graph...
  • 数据库neo4j(二)python 连接neo4j 安装所需连接驱动 pip install py2neo 导入基本模块 在完成安装之后,在python中调用py2neo即可,常用的有Graph,Node, Relationship。 from py2neo import Graph,...
  • 数据库neo4j(二)python 连接neo4j 环境 增删改查 清空库 创建节点 Node查询 关系查询 更新push 删除node与relationship 多条件查询 NodeSelector-select单条件查询,返回的是多个结果 多条件查询 orderby ...
  • Neo4j实战-使用python语言操作neo4j数据库

    万次阅读 热门讨论 2017-05-17 08:59:31
    参考博客...连接Neo4j数据库节点的建立节点之间关系的建立关系属性的赋值以及属性值的更新通过属性值查找节点/关系通过节点/关系查找相关联的节点/关系 1.首先需要安装py2neo,建立数
  • Python操作Neo4j第一天——Python成功连接Neo4j

    千次阅读 热门讨论 2019-09-17 11:07:14
    Python操作Neo4j第一天 环境准备: (1)neo4j安装并启动,浏览器打开neo4j界面:localhost:7474/browser/ ; (2)python环境配置好,我用的是Pycharm 完整代码如下: from py2neo import Graph,Node, ...
  • 使用python连接neo4j时报错,错误内容见下图: 错误原因: 连接neo4j时用户名和密码不一致造成的 解决办法: 输入正确的用户名和密码,如果实在忘了默认用户neo4j的密码,可以重新添加一个neo4j新用户 添加流程: ...
  • 如果没有服务API,Neo4j就不能支持其他语言。该接口提供一组基于JSON消息格式的RESTful Web服务和一个全面的发现机制。使用中使用这个接口的最快和最容易的方法是通过使用cURL:$ curl ...
  • python使用Neo4j数据库——py2neo详解(1) 1 py2neo.database-Graph Databases py2neo.database包包含与Neo4j服务器交互所需的类和方法。为方便起见,这些类中的许多类也通过top-level包公开py2neo。 提供的最...
  • Python语言实现Neo4j数据库Web可视化(cytoscape)开发

    万次阅读 多人点赞 2019-04-23 09:48:48
    目录 ...(2)安装neo4jpython驱动 (3)创建文件夹,下载前端显示依赖包,如图 4. 开发过程 (1)flask开发 (2)cytoscape开发 5. 效果图 (1)启动网站 (2)效果预览 1. neo4j 在wi...
  • python操作neo4j数据库的基本方法

    千次阅读 2019-09-10 16:21:04
    最近在做图数据库的相关工作,python有自己的第三方库可以很方便与图数据库进行交互 -- py2neo 一,节点 1,创建节点和关系 >>> from py2neo import Node, Relationship >>> a = Node("Person...
  • python neo4j数据库

    2020-05-26 15:39:55
    知识图谱使用图数据库会更加高效,其存储实体——关系,以及各种属性信息。 neo4j安装 安装jdk,并配置环境,在cmd中输入javac或java -version能够通过即安装完成 下载neo4j,各版本下载地址:...
  • 1、新建本地数据库test,链接打开。 找到import目录 放入三个utf-8编码的数据文件 LOAD CSV WITH HEADERS FROM ‘file:///exchange.csv’ AS line Create (:Exchange {name:line.name, chinesename:line....
  • Py2neo是一个客户端库和工具包,可通过Python应用程序内部和命令行使用Neo4j。该库支持Bolt和HTTP,并提供高级API,OGM,管理工具,交互式控制台,用于Pygments的Cypher词法分析器以及许多其他功能。与以前的版本...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,797
精华内容 1,118
关键字:

python连接neo4j数据库

python 订阅