欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python處理JSON數據并導入Neo4j數據庫

 更新時間:2024年11月04日 15:31:18   作者:engchina  
在數據處理和分析中,JSON是一種常見的數據格式,Neo4j是一個高性能的圖數據庫,能夠存儲和查詢復雜的網絡關系,下面我們就來看看Python如何處理JSON數據并導入Neo4j數據庫吧

引言

在數據處理和分析中,JSON是一種常見的數據格式。Neo4j是一個高性能的圖數據庫,能夠存儲和查詢復雜的網絡關系。本文將通過解析一段Python代碼,詳細介紹如何處理JSON數據并將其導入Neo4j數據庫。

代碼結構概覽

首先,我們來看一下代碼的整體結構:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time     :2022/9/13 10:03
# @File     :handler_person_data.py
# @Description: 處理json數據

import json
import os

from common import constant
from common.conn_neo4j import ConnNeo4j

# 獲得數據文件的路徑
data_path = os.path.join(constant.DATA_DIR, "data-json.json")
# 讀取數據文件的內容
data = json.load(open(data_path, 'r', encoding='utf-8'))
print("人物數目:", len(data))

# 連接Neo4j服務器
neo4j = ConnNeo4j()
# 遍歷數據
for item in data:
    item['name'] = item['中文名']
    # 畢業(yè)于
    school = []
    if '畢業(yè)于' in item.keys():
        school = item['畢業(yè)于']
        item.pop('畢業(yè)于')

    # 作品
    works = []
    if '作品' in item.keys():
        works = item['作品']
        item.pop('作品')

    # 相關人物
    relate_persons = {}
    if '相關人物' in item.keys():
        relate_persons = item['相關人物']
        item.pop('相關人物')

    print(item)
    # 創(chuàng)建人物節(jié)點
    neo4j.create_node("人物", item)
    # 創(chuàng)建學校節(jié)點,人物與學校間的關系
    neo4j.create_node_relations("人物", item, "學校", school, "畢業(yè)于", {'type': '畢業(yè)于'}, False)
    # 創(chuàng)建作品節(jié)點,人物與作品間的關系
    neo4j.create_node_relations("人物", item, "作品", works, "創(chuàng)作", {'type': '創(chuàng)作'}, False)
    # 創(chuàng)建相關人物,人物社會關系
    for key in relate_persons.keys():
        tmp_value = relate_persons[key]
        tmp_rel_type = key
        if key in ['兒子', '女兒', '父親', '母親']:
            neo4j.create_node_relations("人物", item, "人物", tmp_value, tmp_rel_type, {'type': '親子'}, False)
        elif key in ['孫子', '孫女', '爺爺', '奶奶']:
            neo4j.create_node_relations('人物', item, '人物', tmp_value, tmp_rel_type, {'type': '祖孫'}, False)
        elif key in ['哥哥', '妹妹', '弟弟', '姐姐']:
            neo4j.create_node_relations('人物', item, '人物', tmp_value, tmp_rel_type, {'type': '兄弟姐妹'}, False)
        elif key in ['丈夫', '妻子']:
            neo4j.create_node_relations('人物', item, '人物', tmp_value, tmp_rel_type, {'type': '夫妻'}, False)
        elif key in ['女婿', '兒媳']:
            neo4j.create_node_relations('人物', item, '人物', tmp_value, tmp_rel_type, {'type': '婿媳'}, False)
        elif key in ['學生', '老師']:
            neo4j.create_node_relations('人物', item, '人物', tmp_value, tmp_rel_type, {'type': '師生'}, False)
        else:
            neo4j.create_node_relations('人物', item, '人物', tmp_value, tmp_rel_type, {'type': '其他'}, False)

代碼詳解

1. 導入必要的庫

import json
import os

from common import constant
from common.conn_neo4j import ConnNeo4j

json:用于處理JSON格式的數據。

os:用于處理文件路徑。

constant:從common模塊中導入的常量,可能包含數據目錄等信息。

ConnNeo4j:從common.conn_neo4j模塊中導入的Neo4j連接類。

2. 定義數據文件路徑

# 獲得數據文件的路徑
data_path = os.path.join(constant.DATA_DIR, "data-json.json")

data_path:指向包含數據的JSON文件路徑。

3. 讀取JSON文件內容

# 讀取數據文件的內容
data = json.load(open(data_path, 'r', encoding='utf-8'))
print("人物數目:", len(data))

使用json.load()函數讀取JSON文件的內容,并將其存儲在data變量中。

打印出數據中的人物數目。

4. 連接Neo4j服務器

# 連接Neo4j服務器
neo4j = ConnNeo4j()

創(chuàng)建一個ConnNeo4j對象,用于連接Neo4j數據庫。

5. 遍歷數據并處理

# 遍歷數據
for item in data:
    item['name'] = item['中文名']
    # 畢業(yè)于
    school = []
    if '畢業(yè)于' in item.keys():
        school = item['畢業(yè)于']
        item.pop('畢業(yè)于')

    # 作品
    works = []
    if '作品' in item.keys():
        works = item['作品']
        item.pop('作品')

    # 相關人物
    relate_persons = {}
    if '相關人物' in item.keys():
        relate_persons = item['相關人物']
        item.pop('相關人物')

    print(item)
    # 創(chuàng)建人物節(jié)點
    neo4j.create_node("人物", item)
    # 創(chuàng)建學校節(jié)點,人物與學校間的關系
    neo4j.create_node_relations("人物", item, "學校", school, "畢業(yè)于", {'type': '畢業(yè)于'}, False)
    # 創(chuàng)建作品節(jié)點,人物與作品間的關系
    neo4j.create_node_relations("人物", item, "作品", works, "創(chuàng)作", {'type': '創(chuàng)作'}, False)
    # 創(chuàng)建相關人物,人物社會關系
    for key in relate_persons.keys():
        tmp_value = relate_persons[key]
        tmp_rel_type = key
        if key in ['兒子', '女兒', '父親', '母親']:
            neo4j.create_node_relations("人物", item, "人物", tmp_value, tmp_rel_type, {'type': '親子'}, False)
        elif key in ['孫子', '孫女', '爺爺', '奶奶']:
            neo4j.create_node_relations('人物', item, '人物', tmp_value, tmp_rel_type, {'type': '祖孫'}, False)
        elif key in ['哥哥', '妹妹', '弟弟', '姐姐']:
            neo4j.create_node_relations('人物', item, '人物', tmp_value, tmp_rel_type, {'type': '兄弟姐妹'}, False)
        elif key in ['丈夫', '妻子']:
            neo4j.create_node_relations('人物', item, '人物', tmp_value, tmp_rel_type, {'type': '夫妻'}, False)
        elif key in ['女婿', '兒媳']:
            neo4j.create_node_relations('人物', item, '人物', tmp_value, tmp_rel_type, {'type': '婿媳'}, False)
        elif key in ['學生', '老師']:
            neo4j.create_node_relations('人物', item, '人物', tmp_value, tmp_rel_type, {'type': '師生'}, False)
        else:
            neo4j.create_node_relations('人物', item, '人物', tmp_value, tmp_rel_type, {'type': '其他'}, False)

遍歷data中的每個JSON對象。

將中文名字段重命名為name。

處理畢業(yè)于、作品和相關人物字段,并將其從JSON對象中移除。

打印處理后的JSON對象。

調用neo4j.create_node()方法創(chuàng)建人物節(jié)點。

調用neo4j.create_node_relations()方法創(chuàng)建學校、作品和相關人物節(jié)點,并建立相應的關系。

總結

通過這段代碼,我們學會了如何從JSON文件中提取數據,并將其導入Neo4j數據庫。這個過程包括讀取JSON文件、處理數據、創(chuàng)建節(jié)點和關系。希望這篇文章對你理解如何處理JSON數據并導入Neo4j數據庫有所幫助。

到此這篇關于Python處理JSON數據并導入Neo4j數據庫的文章就介紹到這了,更多相關Python處理JSON數據內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python GUI編程之tkinter 關于 ttkbootstrap 的使用詳解

    Python GUI編程之tkinter 關于 ttkbootstrap 的使用

    ttkbootstrap 是一個基于 tkinter 的界面美化庫,使用這個工具可以開發(fā)出類似前端 bootstrap 風格的 tkinter 桌面程序,這篇文章主要介紹了Python GUI編程之tkinter 關于 ttkbootstrap 的使用詳解,需要的朋友可以參考下
    2022-03-03
  • Python類的多繼承的搜索順序

    Python類的多繼承的搜索順序

    python和C++一樣,支持多繼承,本文主要介紹了Python類的多繼承的搜索順序,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2024-03-03
  • Python使用新浪微博API發(fā)送微博的例子

    Python使用新浪微博API發(fā)送微博的例子

    這篇文章主要介紹了Python使用新浪微博API發(fā)送微博的例子,需要的朋友可以參考下
    2014-04-04
  • Pandas Shift函數的基礎入門學習筆記

    Pandas Shift函數的基礎入門學習筆記

    shift函數是對數據進行移動的操作,下面這篇文章主要給大家介紹了關于Pandas Shift函數的基礎入門學習筆記,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-11-11
  • python中的代碼編碼格式轉換問題

    python中的代碼編碼格式轉換問題

    本文給大家講解的是使用Python實現代碼編碼格式轉換的問題,十分的簡單實用,有需要的小伙伴可以參考下。
    2015-06-06
  • python實現簡單ftp客戶端的方法

    python實現簡單ftp客戶端的方法

    這篇文章主要介紹了python實現簡單ftp客戶端的方法,涉及ftplib模塊的相關使用技巧,需要的朋友可以參考下
    2015-06-06
  • python使用tkinter庫實現五子棋游戲

    python使用tkinter庫實現五子棋游戲

    這篇文章主要為大家詳細介紹了python使用tkinter庫實現五子棋游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python編程mac下使用pycharm小技巧

    Python編程mac下使用pycharm小技巧

    這篇文章主要介紹了Python編程中在mac下使用pycharm的一些小技巧,建議正在使用Pycharm的同學們可以收藏閱讀,可以節(jié)省你的編程時間
    2021-09-09
  • python根據距離和時長計算配速示例

    python根據距離和時長計算配速示例

    這篇文章主要介紹了python根據距離和時長計算配速示例,需要的朋友可以參考下
    2014-02-02
  • 巧用python和libnmapd,提取Nmap掃描結果

    巧用python和libnmapd,提取Nmap掃描結果

    本文將會講述一系列如何使用一行代碼解析 nmap 掃描結果,其中會在 Python 環(huán)境中使用到 libnmap 里的 NmapParser 庫,這個庫可以很容易的幫助我們解析 nmap 的掃描結果
    2016-08-08

最新評論