Python常用模块9-Python的json模块简介

一.Python3的json模块介绍

在数据处理的过程中,经常遇到json格式的,那么python里面是如何处理json格式的数据呢?
这里就要提到python的json模块了。

json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串)

  1. json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)
  2. json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)
image.png
image.png

二.Python json模块实例

2.1 json与字典格式相互转换

代码:

import json

dict1 = {'age':16} #这是一个字典
print("原来的类型:",type(dict1))

str_json = json.dumps(dict1) #将字典转换为json(字符串)
print("经过json.dumps()转换后类型变为:",type(str_json))

dict2 = json.loads(str_json) #将json(字符串)转换为字典
print("经过json.loads()转换后类型变为:",type(dict2))

测试记录:

E:\python\learn_python1\venv\Scripts\python.exe E:/python/learn_python1/json_test3.py
原来的类型: <class 'dict'>
经过json.dumps()转换后类型变为: <class 'str'>
经过json.loads()转换后类型变为: <class 'dict'>

Process finished with exit code 0

2.2 将json数据落地到实体表

现在需要将json数据落地到实体的表

mysql端建表语句

create table prod_main(id int,name varchar(100));
create table prod_sub1(id int,name varchar(100),prod_main_id int);
create table prod_sub2(id int,name varchar(100),prod_sub1_id int);

python代码:

import pymysql, datetime
import json

json_data = [
    {
        "id": 1,
        "name": "男士",
        "productTypeDtos": [
            {
                "id": 23,
                "name": "上装",
                "productTypeDtos": [
                    {
                        "id": 33,
                        "name": "毛衣"
                    },
                    {
                        "id": 34,
                        "name": "T恤"
                    },
                    {
                        "id": 35,
                        "name": "衬衫"
                    },
                    {
                        "id": 36,
                        "name": "卫衣"
                    },
                    {
                        "id": 37,
                        "name": "背心"
                    },
                    {
                        "id": 38,
                        "name": "针织衫"
                    },
                    {
                        "id": 39,
                        "name": "POLO衫"
                    }
                ]
            },
            {
                "id": 24,
                "name": "裤装",
                "productTypeDtos": [
                    {
                        "id": 40,
                        "name": "背带裤"
                    },
                    {
                        "id": 41,
                        "name": "休闲裤"
                    },
                    {
                        "id": 42,
                        "name": "短裤"
                    },
                    {
                        "id": 43,
                        "name": "运动裤"
                    },
                    {
                        "id": 44,
                        "name": "哈伦裤"
                    },
                    {
                        "id": 45,
                        "name": "九分裤"
                    },
                    {
                        "id": 46,
                        "name": "七分裤"
                    },
                    {
                        "id": 47,
                        "name": "西裤"
                    },
                    {
                        "id": 48,
                        "name": "牛仔裤"
                    }
                ]
            },
            {
                "id": 25,
                "name": "外套",
                "productTypeDtos": [
                    {
                        "id": 49,
                        "name": "皮衣"
                    },
                    {
                        "id": 50,
                        "name": "风衣"
                    },
                    {
                        "id": 51,
                        "name": "夹克"
                    },
                    {
                        "id": 52,
                        "name": "便西"
                    },
                    {
                        "id": 53,
                        "name": "马甲"
                    },
                    {
                        "id": 54,
                        "name": "大衣"
                    },
                    {
                        "id": 55,
                        "name": "羽绒服"
                    }
                ]
            }
        ]
    },
    {
        "id": 2,
        "name": "女士",
        "productTypeDtos": [
            {
                "id": 26,
                "name": "上装",
                "productTypeDtos": [
                    {
                        "id": 56,
                        "name": "T恤"
                    },
                    {
                        "id": 57,
                        "name": "衬衫"
                    },
                    {
                        "id": 58,
                        "name": "上衣"
                    },
                    {
                        "id": 59,
                        "name": "卫衣"
                    },
                    {
                        "id": 60,
                        "name": "雪纺衫"
                    },
                    {
                        "id": 61,
                        "name": "针织衫"
                    },
                    {
                        "id": 62,
                        "name": "背心"
                    }
                ]
            },
            {
                "id": 27,
                "name": "裤装",
                "productTypeDtos": [
                    {
                        "id": 63,
                        "name": "打底裤"
                    },
                    {
                        "id": 64,
                        "name": "休闲裤"
                    },
                    {
                        "id": 65,
                        "name": "牛仔裤"
                    },
                    {
                        "id": 66,
                        "name": "短裤"
                    },
                    {
                        "id": 67,
                        "name": "连体裤"
                    },
                    {
                        "id": 68,
                        "name": "七分裤"
                    },
                    {
                        "id": 69,
                        "name": "九分裤"
                    },
                    {
                        "id": 70,
                        "name": "哈伦裤"
                    }
                ]
            },
            {
                "id": 29,
                "name": "裙装",
                "productTypeDtos": [
                    {
                        "id": 71,
                        "name": "连衣裙"
                    },
                    {
                        "id": 72,
                        "name": "半身裙"
                    },
                    {
                        "id": 73,
                        "name": "套裙"
                    },
                    {
                        "id": 74,
                        "name": "迷你短裙"
                    },
                    {
                        "id": 75,
                        "name": "礼服"
                    }
                ]
            },
            {
                "id": 28,
                "name": "外套",
                "productTypeDtos": [
                    {
                        "id": 76,
                        "name": "风衣"
                    },
                    {
                        "id": 77,
                        "name": "便西"
                    },
                    {
                        "id": 78,
                        "name": "夹克"
                    },
                    {
                        "id": 79,
                        "name": "马甲"
                    },
                    {
                        "id": 80,
                        "name": "斗篷"
                    },
                    {
                        "id": 81,
                        "name": "大衣"
                    },
                    {
                        "id": 82,
                        "name": "羽绒服"
                    },
                    {
                        "id": 83,
                        "name": "皮草"
                    }
                ]
            },
            {
                "id": 30,
                "name": "内衣",
                "productTypeDtos": [
                    {
                        "id": 84,
                        "name": "内衣"
                    }
                ]
            }
        ]
    },
    {
        "id": 3,
        "name": "童装",
        "productTypeDtos": [
            {
                "id": 31,
                "name": "男童",
                "productTypeDtos": [
                    {
                        "id": 85,
                        "name": "T恤"
                    },
                    {
                        "id": 86,
                        "name": "外套"
                    },
                    {
                        "id": 87,
                        "name": "卫衣"
                    },
                    {
                        "id": 88,
                        "name": "衬衫"
                    },
                    {
                        "id": 89,
                        "name": "裤子"
                    }
                ]
            },
            {
                "id": 32,
                "name": "女童",
                "productTypeDtos": [
                    {
                        "id": 90,
                        "name": "连衣裙"
                    },
                    {
                        "id": 91,
                        "name": "T恤"
                    },
                    {
                        "id": 92,
                        "name": "卫衣"
                    },
                    {
                        "id": 93,
                        "name": "背心"
                    },
                    {
                        "id": 94,
                        "name": "礼服"
                    },
                    {
                        "id": 95,
                        "name": "雪纺衫"
                    },
                    {
                        "id": 96,
                        "name": "衬衫"
                    },
                    {
                        "id": 97,
                        "name": "裤子"
                    },
                    {
                        "id": 98,
                        "name": "半身裙"
                    },
                    {
                        "id": 99,
                        "name": "外套"
                    }
                ]
            }
        ]
    }
]

sql1 = "insert into prod_main(id ,name) values ('%s', '%s')"
sql2 = "insert into prod_sub1(id ,name ,prod_main_id) values ('%s', '%s', '%s')"
sql3 = "insert into prod_sub2(id ,name , prod_sub1_id) values ('%s', '%s', '%s')"

conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='abc123',db='zqs')
cursor = conn.cursor()

for i1 in json_data:
    #print(i)
    #print(i1['id'])
    #print(i1['name'])

    cursor.execute(sql1 % (i1['id'],i1['name']))

    for i2 in i1['productTypeDtos']:
        #print(i2['id'])
        #print(i2['name'])

        cursor.execute(sql2 % (i2['id'], i2['name'],i1['id']) )

        for i3 in i2['productTypeDtos']:
            #print(i3['id'])
            #print(i3['name'])

            cursor.execute(sql3 % (i3['id'], i3['name'], i2['id']) )


conn.commit()

# 关闭连接
cursor.close()
conn.close()

Python解析json落地成mysql表简直不要太方便
mysql表查看数据:

mysql> select * from prod_main;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 男士   |
|    2 | 女士   |
|    3 | 童装   |
+------+--------+
3 rows in set (0.00 sec)

mysql> select * from prod_sub1;
+------+--------+--------------+
| id   | name   | prod_main_id |
+------+--------+--------------+
|   23 | 上装   |            1 |
|   24 | 裤装   |            1 |
|   25 | 外套   |            1 |
|   26 | 上装   |            2 |
|   27 | 裤装   |            2 |
|   29 | 裙装   |            2 |
|   28 | 外套   |            2 |
|   30 | 内衣   |            2 |
|   31 | 男童   |            3 |
|   32 | 女童   |            3 |
+------+--------+--------------+
10 rows in set (0.00 sec)

mysql> select * from prod_sub2 limit 20;
+------+-----------+--------------+
| id   | name      | prod_sub1_id |
+------+-----------+--------------+
|   33 | 毛衣      |           23 |
|   34 | T恤       |           23 |
|   35 | 衬衫      |           23 |
|   36 | 卫衣      |           23 |
|   37 | 背心      |           23 |
|   38 | 针织衫    |           23 |
|   39 | POLO衫    |           23 |
|   40 | 背带裤    |           24 |
|   41 | 休闲裤    |           24 |
|   42 | 短裤      |           24 |
|   43 | 运动裤    |           24 |
|   44 | 哈伦裤    |           24 |
|   45 | 九分裤    |           24 |
|   46 | 七分裤    |           24 |
|   47 | 西裤      |           24 |
|   48 | 牛仔裤    |           24 |
|   49 | 皮衣      |           25 |
|   50 | 风衣      |           25 |
|   51 | 夹克      |           25 |
|   52 | 便西      |           25 |
+------+-----------+--------------+
20 rows in set (0.00 sec)

mysql>

参考:

1.https://docs.python.org/zh-cn/3.6/library/json.html
2.https://www.jianshu.com/p/1ad6d267d177
3.https://www.cnblogs.com/jeavy/p/9503553.html
4.https://blog.csdn.net/qq_35889665/article/details/94565884

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容