使用Python将JSON数据写入MySQL数据库的完整教程

发布于:2025-06-29 ⋅ 阅读:(18) ⋅ 点赞:(0)

引言

在现代数据处理流程中,JSON作为轻量级数据交换格式被广泛应用。本教程将详细讲解如何通过Python将JSON格式的数据高效写入MySQL数据库,涵盖从环境配置到数据落地的全流程。


一、环境准备

所需工具

  1. Python 3.8+
  2. MySQL 8.0+
  3. Python库:
    第一步
    pip install pymysql
    第二步
    在 Django 项目的 __init__.py 中添加:
    import pymysql
     	pymysql.install_as_MySQLdb()
    

    数据库配置

创建目标数据库和表(示例):
CREATE DATABASE json_db;
USE json_db;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    age INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

二、实现流程

JSON文件
Python读取解析
建立数据库连接
构造SQL语句
批量写入MySQL

三、代码实现

1. 示例JSON数据(jiukuaijiu.json)

[
    {
        "category": "\u7537\u88c5",
        "goods": [

        ]
    },
    {
        "category": "\u5973\u88c5",
        "goods": [
            {
                "sizes": [
                    [
                        "150",
                        "150"
                    ],
                    [
                        "160",
                        "160"
                    ],
                    [
                        "165",
                        "165"
                    ],
                    [
                        "170",
                        "170"
                    ]
                ],
                "goods_oldprice": "499.00",
                "goods_desc": "\u68a6\u5a1c\u4e16\u5bb62017\u5973\u5f0f\u65b0\u6b3e\u4fee\u8eab\u4e2d\u957f\u6b3e\u6bdb\u9886\u65f6\u5c1a\u663e\u7626\u6b27\u7f8e\u6c14\u8d28\u7fbd\u7ed2\u670dA88",
                "colors": [
                    [
                        "\u7ea2\u8272",
                        "/media/color/hong_Dm4fQ6U.jpg"
                    ],
                    [
                        "\u7eff\u8272",
                        "/media/color/lv_cTMJg2K.jpg"
                    ],
                    [
                        "\u9ec4\u8272",
                        "/media/color/huang_bvCMlhn.jpg"
                    ],
                    [
                        "\u9ed1\u8272",
                        "/media/color/hei_rFOWelp.jpg"
                    ]
                ],
                "goodsname": "90\u7ed2\u5927\u6bdb\u9886\u4fdd\u6696\u7fbd\u7ed2\u670d",
                "goods_price": "99.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_mpwtoGA.jpg",
                            "/media/2_UuQkY4b.jpg",
                            "/media/3_ViMgWv6.jpg",
                            "/media/4_BDmgdFv.jpg",
                            "/media/5_ozWIsej.jpg",
                            "/media/6_Pny8yTQ.jpg",
                            "/media/7_K4tB09L.jpg",
                            "/media/8_60MJMwS.jpg",
                            "/media/9_8YomGSk.jpg",
                            "/media/10_vonnLjk.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "100.00",
                "goods_desc": "\u79cb\u88c5\u65f6\u5c1a\u5370\u82b1\u590d\u53e4\u65f6\u5c1a\u4f11\u95f2\u4e24\u4ef6\u5957\u88c5\u88d9\u5b50",
                "colors": [
                    [
                        "\u767d\u8272",
                        "/media/color/bai_mt1VrH5.jpg"
                    ],
                    [
                        "\u4e09\u53f7\u8272",
                        "/media/color/san.jpg"
                    ]
                ],
                "goodsname": "\u79cb\u65f6\u5c1a\u5370\u82b1\u4e24\u4ef6\u5957\u88c5\u88d9",
                "goods_price": "35.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_DNiW0D5.jpg",
                            "/media/2_eHi0Rix.jpg",
                            "/media/3_2e1cWcs.jpg",
                            "/media/4_D0ck80V.jpg",
                            "/media/5_bxMyxv5.jpg",
                            "/media/6_Z4j72Ft.jpg",
                            "/media/7_3QbFC0z.jpg",
                            "/media/8_OQGcrwL.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "\u5747\u7801",
                        "\u5747\u7801"
                    ]
                ],
                "goods_oldprice": "369.00",
                "goods_desc": "\u65b0\u6b3e\u97e9\u7248\u524d\u77ed\u540e\u957f \u4fa7\u5f00\u53c9\u5bbd\u677e\u5706\u9886 \u7eaf\u8272\u5927\u7801\u5957\u5934\u9488\u7ec7\u886b\u5916\u5957",
                "colors": [
                    [
                        "\u7ea2\u8272",
                        "/media/color/hong_y7wQwRw.jpg"
                    ],
                    [
                        "\u9ec4\u8272",
                        "/media/color/huang_NKcgOlT.jpg"
                    ],
                    [
                        "\u7d2b\u8272",
                        "/media/color/zi_umktLLD.jpg"
                    ]
                ],
                "goodsname": "\u97e9\u7248\u4fa7\u5f00\u53c9\u5bbd\u677e\u6bdb\u8863",
                "goods_price": "39.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_QoLgPlj.jpg",
                            "/media/2_lHY8mE9.jpg",
                            "/media/3_GiFc4gk.jpg",
                            "/media/4_IBO3QkF.jpg",
                            "/media/5_NjssJjH.jpg",
                            "/media/6_TJDGChY.jpg",
                            "/media/7_Sv0tWHZ.jpg",
                            "/media/8_MDhSM1I.jpg",
                            "/media/9_BUoWkrL.jpg",
                            "/media/10_k9f1eEK.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "M",
                        "M"
                    ]
                ],
                "goods_oldprice": "296.00",
                "goods_desc": "2017\u79cb\u5b63\u65b0\u6b3e\u4e0a\u8863\u6f6e \u7b11\u8138\u5b66\u9662\u98ce\u9488\u7ec7\u80cc\u5fc3\u65e0\u8896\u5957\u5934\u6bdb\u8863\u9a6c\u7532\u5973\u6625\u79cb",
                "colors": [
                    [
                        "\u84dd\u8272",
                        "/media/color/lan_BKQdpOj.jpg"
                    ]
                ],
                "goodsname": "\u65e0\u8896\u5957\u5934\u6bdb\u8863\u9a6c\u7532\u5973\u79cb",
                "goods_price": "39.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_ORTzeTY.jpg",
                            "/media/2_RbgTYId.jpg",
                            "/media/3_1CyOSyR.jpg",
                            "/media/4_0490Pq4.jpg",
                            "/media/5_gk51Yc1.jpg",
                            "/media/6_MNo76Wb.jpg",
                            "/media/7_4JyLPNO.jpg",
                            "/media/8_VX32aT2.jpg",
                            "/media/9_x8mkplo.jpg",
                            "/media/10_1OVaH2E.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "229.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u65b0\u6b3e\u7ea2\u8272\u539f\u5bbfbf\u98ce\u725b\u4ed4\u5c0f\u5916\u5957\u5973",
                "colors": [
                    [
                        "\u7ea2\u8272",
                        "/media/color/hong_zHPXVqY.jpg"
                    ]
                ],
                "goodsname": "\u7ea2\u8272\u539f\u5bbfbf\u98ce\u5c0f\u5916\u5957",
                "goods_price": "69.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_0IilSTS.jpg",
                            "/media/2_dU6RLKQ.jpg",
                            "/media/3_eLYKeSJ.jpg",
                            "/media/4_mwUqQ7u.jpg",
                            "/media/5_AOfqMfX.jpg",
                            "/media/6_LE1Qg19.jpg",
                            "/media/7_7RVZFif.jpg",
                            "/media/8_W5zUBfp.jpg",
                            "/media/9_Py3cDKv.jpg",
                            "/media/10_w9OXfoC.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ]
                ],
                "goods_oldprice": "199.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u65b0\u6b3e\u4e0d\u89c4\u5219\u6bdb\u8fb9\u5587\u53ed\u957f\u88e4\u725b\u4ed4\u88e4",
                "colors": [
                    [
                        "\u84dd\u8272",
                        "/media/color/lan_IThSO4Z.jpg"
                    ]
                ],
                "goodsname": "\u4e0d\u89c4\u5219\u6bdb\u8fb9\u5587\u53ed\u725b\u4ed4\u88e4",
                "goods_price": "65.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_f8GP2Js.jpg",
                            "/media/2_mewqiym.jpg",
                            "/media/3_T3najRK.jpg",
                            "/media/4_Zn7OFjf.jpg",
                            "/media/5_z6JRqPe.jpg",
                            "/media/6_96JhJlq.jpg",
                            "/media/7_eNtOUP3.jpg",
                            "/media/8_B13UoeN.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "259.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u65b0\u6b3e\u5bbd\u677e\u77ed\u6b3e\u65f6\u5c1a\u7ee3\u82b1\u725b\u4ed4\u5916\u5957\u5973",
                "colors": [
                    [
                        "\u84dd\u8272",
                        "/media/color/lan_ELubwxG.jpg"
                    ]
                ],
                "goodsname": "\u5bbd\u677e\u77ed\u6b3e\u725b\u4ed4\u5916\u5957",
                "goods_price": "79.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_bmqDR3N.jpg",
                            "/media/2_72CrUqv.jpg",
                            "/media/3_FVVk5kE.jpg",
                            "/media/4_LNKrlRN.jpg",
                            "/media/5_qHsL809.jpg",
                            "/media/6_EXgGQLK.jpg",
                            "/media/7_lJD2O84.jpg",
                            "/media/8_TM4De6X.jpg",
                            "/media/9_gLF6TGo.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "199.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u65b0\u6b3e\u6c14\u8d28\u65f6\u5c1a\u6536\u8170\u663e\u7626\u8fde\u8863\u88d9\u5973",
                "colors": [
                    [
                        "\u7eff\u8272",
                        "/media/color/lv_H5hkmmq.jpg"
                    ],
                    [
                        "\u7ea2\u8272",
                        "/media/color/hong_4FhJTrJ.jpg"
                    ],
                    [
                        "\u84dd\u8272",
                        "/media/color/lan_7rd4yDs.jpg"
                    ]
                ],
                "goodsname": "\u6c14\u8d28\u6536\u8170\u663e\u7626\u8fde\u8863\u88d9",
                "goods_price": "69.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_VJ7ZAQ6.jpg",
                            "/media/2_w4cxzhY.jpg",
                            "/media/3_U55lgsP.jpg",
                            "/media/4_EzoxL21.jpg",
                            "/media/5_Rewgb01.jpg",
                            "/media/6_ze76f9K.jpg",
                            "/media/7_6Wq1Bgx.jpg",
                            "/media/8_R2uMfUz.jpg",
                            "/media/9_D7uVd9z.jpg",
                            "/media/10_0RIywDD.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "199.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u65b0\u6b3e\u9488\u7ec7\u8896\u65f6\u5c1a\u62fc\u63a5\u6bdb\u5462\u6253\u5e95\u88d9",
                "colors": [
                    [
                        "\u7070\u8272",
                        "/media/color/hui.jpg"
                    ],
                    [
                        "\u84dd\u8272",
                        "/media/color/lan.jpg"
                    ],
                    [
                        "\u7ea2\u8272",
                        "/media/color/hong_UO2LzHh.jpg"
                    ],
                    [
                        "\u9ed1\u8272",
                        "/media/color/hei_cOOnNKI.jpg"
                    ]
                ],
                "goodsname": "\u9488\u7ec7\u8896\u62fc\u63a5\u6bdb\u5462\u6253\u5e95\u88d9",
                "goods_price": "69.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_mfc1bTY.jpg",
                            "/media/2_GohidDO.jpg",
                            "/media/3_mFj1A5X.jpg",
                            "/media/4_H23ayWL.jpg",
                            "/media/5_SGzSxZZ.jpg",
                            "/media/6_li3hJqN.jpg",
                            "/media/7_lK1M9SF.jpg",
                            "/media/8_7L4e40W.jpg",
                            "/media/9_TW7TlmY.jpg",
                            "/media/10_woLP7jo.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "299.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u65b0\u6b3e\u7b80\u7ea6\u53cc\u6392\u6263\u5047\u4e24\u4ef6\u8fde\u8863\u88d9\u5973",
                "colors": [
                    [
                        "\u9ed1\u8272",
                        "/media/color/hei_kYyKPNv.jpg"
                    ]
                ],
                "goodsname": "\u53cc\u6392\u6263\u5047\u4e24\u4ef6\u8fde\u8863\u88d9",
                "goods_price": "69.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_oeshNKk.jpg",
                            "/media/2_iQ7dNj1.jpg",
                            "/media/3_8WGGwE5.jpg",
                            "/media/4_m2QcMFM.jpg",
                            "/media/5_m3BYUyr.jpg",
                            "/media/6_mJhhcKP.jpg",
                            "/media/7_NKEyR9K.jpg",
                            "/media/8_gRR4RHz.jpg",
                            "/media/9_YhUmuWF.jpg",
                            "/media/10_8H4hKoc.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "199.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u65b0\u6b3e\u4fee\u8eab\u5305\u81c0\u857e\u4e1d\u6253\u5e95\u88d9\u8fde\u8863\u88d9",
                "colors": [
                    [
                        "\u7eff\u8272",
                        "/media/color/lv_sxlJZTq.jpg"
                    ],
                    [
                        "\u767d\u8272",
                        "/media/color/bai_B7tmsjh.jpg"
                    ],
                    [
                        "\u9ed1\u8272",
                        "/media/color/hei_sNOao2p.jpg"
                    ]
                ],
                "goodsname": "\u4fee\u8eab\u5305\u81c0\u857e\u4e1d\u6253\u5e95\u88d9",
                "goods_price": "69.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_Rqdz7U7.jpg",
                            "/media/2_wyGJ4ta.jpg",
                            "/media/3_NNxcobt.jpg",
                            "/media/4_LOhSXlh.jpg",
                            "/media/5_OEepnkc.jpg",
                            "/media/6_om0yrNS.jpg",
                            "/media/7_va0yr9Y.jpg",
                            "/media/8_egWx7Pl.jpg",
                            "/media/9_JJPOi3d.jpg",
                            "/media/10_yXoBnL0.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "259.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u65b0\u6b3e\u4fee\u8eab\u663e\u7626\u683c\u5b50\u6253\u5e95\u88d9\u8fde\u8863\u88d9",
                "colors": [
                    [
                        "\u6a58\u8272",
                        "/media/color/ju.jpg"
                    ],
                    [
                        "\u7d2b\u8272",
                        "/media/color/zi.jpg"
                    ]
                ],
                "goodsname": "\u4fee\u8eab\u663e\u7626\u683c\u5b50\u6253\u5e95\u88d9",
                "goods_price": "69.90",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_EPbLlsh.jpg",
                            "/media/2_CG1HTi2.jpg",
                            "/media/3_LrJ1TCJ.jpg",
                            "/media/4_ppO44fs.jpg",
                            "/media/5_3tIgCS6.jpg",
                            "/media/6_KN6SOts.jpg",
                            "/media/7_7vLJg1T.jpg",
                            "/media/8_BaXff43.jpg",
                            "/media/9_AexcCbE.jpg",
                            "/media/10_yG5bZ6x.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "199.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u65b0\u6b3e\u6761\u7eb9\u65f6\u5c1a\u663e\u7626\u7f51\u7eb1\u8fde\u8863\u88d9\u5973",
                "colors": [
                    [
                        "\u6591\u9a6c\u8272",
                        "/media/color/ban_fSqFE03.jpg"
                    ],
                    [
                        "\u9ed1\u8272",
                        "/media/color/hei_ZyxMfgc.jpg"
                    ]
                ],
                "goodsname": "\u6761\u7eb9\u663e\u7626\u7f51\u7eb1\u8fde\u8863\u88d9",
                "goods_price": "69.90",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_X1vUHuX.jpg",
                            "/media/2_rQvH5hc.jpg",
                            "/media/3_T5aiJXo.jpg",
                            "/media/4_VYfCSBP.jpg",
                            "/media/5_KdbwcPL.jpg",
                            "/media/6_7stuZRI.jpg",
                            "/media/7_WB2mznP.jpg",
                            "/media/8_7HnFJUe.jpg",
                            "/media/9_HN634xt.jpg",
                            "/media/10_Gs7AS8Z.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "255.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u65b0\u6b3e\u65f6\u5c1a\u663e\u7626\u857e\u4e1d\u4e2d\u957f\u8fde\u8863\u88d9\u5973",
                "colors": [
                    [
                        "\u767d\u8272",
                        "/media/color/bai.jpg"
                    ],
                    [
                        "\u9ed1\u8272",
                        "/media/color/hei_goVnbhs.jpg"
                    ]
                ],
                "goodsname": "\u663e\u7626\u857e\u4e1d\u4e2d\u957f\u8fde\u8863\u88d9",
                "goods_price": "69.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_qhSeLSP.jpg",
                            "/media/2_T1EYNmq.jpg",
                            "/media/3_M5MK3Rp.jpg",
                            "/media/4_Qsb0wFi.jpg",
                            "/media/5_8L7yPar.jpg",
                            "/media/6_Xaip1y1.jpg",
                            "/media/7_MEUf1z0.jpg",
                            "/media/8_KtL5Rj0.jpg",
                            "/media/9_yFn3P2g.jpg",
                            "/media/10_TmP9DXa.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "299.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u65b0\u6b3e\u65f6\u5c1a\u4fee\u8eab\u4e24\u4ef6\u5957\u88c5\u8fde\u8863\u88d9\u5973",
                "colors": [
                    [
                        "\u7eff\u8272",
                        "/media/color/lv_eFlravj.jpg"
                    ],
                    [
                        "\u7ea2\u8272",
                        "/media/color/hong_nwQGdMd.jpg"
                    ],
                    [
                        "\u68d5\u8272",
                        "/media/color/zong_v7JDaAc.jpg"
                    ]
                ],
                "goodsname": "\u65f6\u5c1a\u4fee\u8eab\u4e24\u4ef6\u5957\u88c5\u88d9",
                "goods_price": "68.90",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_YVRqAfG.jpg",
                            "/media/2_rJP2AdH.jpg",
                            "/media/3_gQdONuG.jpg",
                            "/media/4_7T0yj4F.jpg",
                            "/media/5_DI2p1Wl.jpg",
                            "/media/6_CmqXZLW.jpg",
                            "/media/7_XOIrJSq.jpg",
                            "/media/8_ZqFUlsq.jpg",
                            "/media/9_CwxVXnR.jpg",
                            "/media/10_gn66t3j.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "199.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u6761\u7eb9\u65f6\u5c1a\u9488\u7ec7\u5305\u81c0\u6253\u5e95\u88d9\u8fde\u8863\u88d9",
                "colors": [
                    [
                        "\u6591\u9a6c\u8272",
                        "/media/color/ban.jpg"
                    ]
                ],
                "goodsname": "\u6761\u7eb9\u9488\u7ec7\u5305\u81c0\u8fde\u8863\u88d9",
                "goods_price": "65.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_v57UFo5.jpg",
                            "/media/2_nT3X3Gi.jpg",
                            "/media/3_C9361FH.jpg",
                            "/media/4_KPjviHC.jpg",
                            "/media/5_j9H6NUg.jpg",
                            "/media/6_0yvtHsK.jpg",
                            "/media/7_OyIqVRu.jpg",
                            "/media/8_zaePCtI.jpg",
                            "/media/9_zDqfKRE.jpg",
                            "/media/10_o3nc5fU.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "259.00",
                "goods_desc": "\u8bd7\u8d6b\u59ff\u79cb\u7cfb\u5e26\u663e\u7626\u5bbd\u677e\u65f6\u5c1a\u5957\u88c5\u9614\u817f\u88e4\u5973",
                "colors": [
                    [
                        "\u9ed1\u8272",
                        "/media/color/hei_3vOTo3s.jpg"
                    ],
                    [
                        "\u7eff\u8272",
                        "/media/color/lv.jpg"
                    ],
                    [
                        "\u9ec4",
                        "/media/color/huang.jpg"
                    ]
                ],
                "goodsname": "\u7cfb\u5e26\u663e\u7626\u5bbd\u677e\u5957\u88c5",
                "goods_price": "69.90",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_vXCGxCI.jpg",
                            "/media/2_54gKgQP.jpg",
                            "/media/3_eNxYhCr.jpg",
                            "/media/4_BprQkfJ.jpg",
                            "/media/5_qsc95lP.jpg",
                            "/media/6_UAGLwbX.jpg",
                            "/media/7_F6hIwWB.jpg",
                            "/media/8_a2kJabS.jpg",
                            "/media/9_SZ0wMpy.jpg",
                            "/media/10_MeWXSKs.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ]
                ],
                "goods_oldprice": "124.00",
                "goods_desc": "\u65b0\u6b3e\u5927\u7801\u5973\u88c5\u857e\u4e1d\u886b\u97e9\u7248\u4fee\u8eabV\u9886\u957f\u8896\u6253\u5e95\u886b\u7f51\u7eb1\u9542\u7a7a\u4e0a\u8863",
                "colors": [
                    [
                        "\u9ed1\u8272",
                        "/media/color/hei_JeBWGjF.jpg"
                    ]
                ],
                "goodsname": "\u79cb\u5b63V\u9886\u9542\u7a7a\u857e\u4e1d\u886b",
                "goods_price": "28.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_NMUUNXC.jpg",
                            "/media/2_Ouot4Pr.jpg",
                            "/media/3_Gz1jfea.jpg",
                            "/media/4_I75CkJ3.jpg",
                            "/media/5_o83wrz9.jpg",
                            "/media/6_a6urQrM.jpg",
                            "/media/7_Wj7Dhuj.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "199.00",
                "goods_desc": "\u79cb\u51ac\u65f6\u5c1a\u767e\u642d\u9ad8\u8170PU\u76ae\u9614\u817f\u77ed\u88e4\u5973\u6253\u5e95\u76ae\u88e4",
                "colors": [
                    [
                        "\u9ed1\u8272",
                        "/media/color/hei_LfSKcUV.jpg"
                    ]
                ],
                "goodsname": "\u677e\u7d27\u8170PU\u76ae\u77ed\u88e4",
                "goods_price": "19.90",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_hYKWHNU.jpg",
                            "/media/2_HG8qNBO.jpg",
                            "/media/3_aDwC2Ql.jpg",
                            "/media/4_Rj4l1L8.jpg",
                            "/media/5_23MIkpl.jpg",
                            "/media/6_q3Kpy4T.jpg",
                            "/media/7_9VDJMAo.jpg",
                            "/media/8_aIKJvFt.jpg",
                            "/media/9_InpWyDb.jpg",
                            "/media/10_5jDjWzb.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "199.00",
                "goods_desc": "\u79cb\u51ac\u65f6\u5c1a\u9ad8\u8170\u523a\u7ee3PU\u76ae\u77ed\u88d9\u5973\u6253\u5e95\u534a\u8eab\u88d9",
                "colors": [
                    [
                        "\u9ed1\u8272",
                        "/media/color/hei_1d7yrVm.jpg"
                    ]
                ],
                "goodsname": "\u9ad8\u8170\u523a\u7ee3PU\u76ae\u77ed\u88d9",
                "goods_price": "29.90",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_elE8eIp.jpg",
                            "/media/2_4vn9XVx.jpg",
                            "/media/3_D1iL18X.jpg",
                            "/media/4_i3s0HY6.jpg",
                            "/media/5_fjAcCOl.jpg",
                            "/media/6_ECsXNEg.jpg",
                            "/media/7_7pnv5eG.jpg",
                            "/media/8_dDvDZt3.jpg",
                            "/media/9_e0PyyUN.jpg",
                            "/media/10_w27K7NE.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "199.00",
                "goods_desc": "\u79cb\u88c5\u65b0\u6b3e\u5973\u88c5\u6bdb\u5462\u77ed\u5916\u5957\u5973 \u65f6\u5c1a\u4fee\u8eab\u77ed\u6b3e\u5462\u5b50\u5c0f\u897f\u88c5\u6f6e",
                "colors": [
                    [
                        "\u9ed1\u8272",
                        "/media/color/hei.jpg"
                    ],
                    [
                        "\u7ea2\u8272",
                        "/media/color/hongse.jpg"
                    ]
                ],
                "goodsname": "\u4fee\u8eab\u77ed\u6b3e\u5462\u5b50\u5c0f\u5916\u5957",
                "goods_price": "39.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1_lCofK1Q.jpg",
                            "/media/2_fN7fXqT.jpg",
                            "/media/3_sQci5N1.jpg",
                            "/media/4_t8f1jLp.jpg",
                            "/media/5_pnAqZij.jpg",
                            "/media/6_Jyvt0gV.jpg",
                            "/media/7_88GAaTo.jpg",
                            "/media/8_dwmGQq1.jpg",
                            "/media/9_IVxniTc.jpg",
                            "/media/10_MBQOH1D.jpg"
                        ]
                    ]
                ]
            },
            {
                "sizes": [
                    [
                        "S",
                        "S"
                    ],
                    [
                        "M",
                        "M"
                    ],
                    [
                        "L",
                        "L"
                    ],
                    [
                        "XL",
                        "XL"
                    ]
                ],
                "goods_oldprice": "256.00",
                "goods_desc": "\u4e2d\u957f\u6b3e\u53cc\u9762\u5462\u6bdb\u5462\u5916\u5957",
                "colors": [
                    [
                        "\u9ed1\u8272",
                        "/media/color/h_2og4uJv.jpg"
                    ],
                    [
                        "\u7ea2\u8272",
                        "/media/color/hong.jpg"
                    ],
                    [
                        "\u68d5\u8272",
                        "/media/color/zong.jpg"
                    ]
                ],
                "goodsname": "\u4e2d\u957f\u6b3e\u53cc\u9762\u5462\u6bdb\u5462\u5916\u5957",
                "goods_price": "33.00",
                "specs": [
                    [
                        "\u53c2\u6570\u89c4\u683c",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_03.png"
                        ]
                    ],
                    [
                        "\u6574\u4f53\u6b3e\u5f0f",
                        [
                            "/static/img/%E8%AF%A6%E6%83%85%E9%A1%B5_06.png"
                        ]
                    ],
                    [
                        "\u6a21\u7279\u5b9e\u62cd",
                        [
                            "/media/1.jpg",
                            "/media/2.jpg",
                            "/media/3.jpg",
                            "/media/4.jpg",
                            "/media/5.jpg",
                            "/media/6.jpg",
                            "/media/7.jpg",
                            "/media/8.jpg",
                            "/media/9.jpg",
                            "/media/10.jpg"
                        ]
                    ]
                ]
            }
        ]
    },
    {
        "category": "\u978b\u5b50",
        "goods": [

        ]
    },
    {
        "category": "\u7bb1\u5305",
        "goods": [

        ]
    },
    {
        "category": "\u6bcd\u5a74",
        "goods": [

        ]
    },
    {
        "category": "\u7f8e\u5986",
        "goods": [

        ]
    },
    {
        "category": "\u5c45\u5bb6",
        "goods": [

        ]
    },
    {
        "category": "\u5bb6\u7eba",
        "goods": [

        ]
    },
    {
        "category": "\u6587\u4f53",
        "goods": [

        ]
    },
    {
        "category": "\u7f8e\u98df",
        "goods": [

        ]
    },
    {
        "category": "\u6570\u7801",
        "goods": [

        ]
    },
    {
        "category": "\u7535\u5668",
        "goods": [

        ]
    },
    {
        "category": "\u5185\u8863",
        "goods": [

        ]
    },
    {
        "category": "\u88c5\u9970",
        "goods": [

        ]
    }
]

2. Python处理脚本

from collections.abc import Sized

from django.db.transaction import atomic

from goods.models import Category, Goods, Size, Color, GoodDetail, GoodDetailName, Inventory


@atomic
def test_model():
    with open('utils/jiukuaijiu.json') as fr:
        import json
        datas = json.loads(fr.read())
        for data in datas:
            cate = Category.objects.create(cname=data['category'])
            _goods = data['goods']
            for goods in _goods:
                good = Goods.objects.create(
                    gname=goods['goodsname'],gdesc=goods['goods_desc'],
                    price=goods['goods_price'],oldprice=goods['goods_oldprice'],
                    category=cate
                )
                sizes = []
                for _size in goods['sizes']:
                    if Size.objects.filter(sname=_size[0]).count()==1:
                        size = Size.objects.get(sname=_size[0])
                    else:
                        size = Size.objects.create(sname=_size[0])
                    sizes.append(size)

                colors = []
                for _color in goods['colors']:
                    color = Color.objects.create(colorname=_color[0],colorurl=_color[1])
                    colors.append(color)

                for _spec in goods['specs']:
                    goodsdet = GoodDetailName.objects.create(gdname=_spec[0])
                    for img in _spec[1]:
                        GoodDetail.objects.create(goods=good,gdname=goodsdet,gdurl=img)

                for c in colors:
                    for s in sizes:
                        Inventory.objects.create(count=100,goods=good,color=c,size=s)


def deleteall():
    Category.objects.filter().delete()
    Color.objects.filter().delete()
    Size.objects.filter().delete()

json文件要与代码在同一层次,否则运行会有路径问题。

在这里插入图片描述
在控制台输入这两段代码,发现json数据导入成功

from utils.loaddata import *
test_model()

在这里插入图片描述
在这里插入图片描述

四、关键技术点

1. 数据映射关系

JSON字段 MySQL字段 数据类型
name name VARCHAR
email email VARCHAR
age age INT

2. 批量插入优势

使用executemany()方法比单条插入效率提升显著:
插入耗时 ∝ 1 n ( n = 批量大小 ) \text{插入耗时} \propto \frac{1}{n} \quad (n=\text{批量大小}) 插入耗时n1(n=批量大小)

3. 错误处理机制

  • 使用try-except捕获数据库异常
  • finally确保连接关闭
  • 事务提交(commit)保障数据一致性

五、执行结果验证

SELECT * FROM users;
id name email age created_at
1 张三 zhangsan@example.com 28 2023-08-20 10:25:31
2 李四 lisi@example.com 32 2023-08-20 10:25:31

六、常见问题解决

  1. 中文乱码问题
    conn.set_charset_collation('utf8mb4')
    
  2. 数据类型转换
    • JSON数字 → MySQL INT/DECIMAL
    • JSON布尔 → MySQL TINYINT(1)
  3. 连接超时处理
    db_config['pool_size'] = 5
    db_config['pool_timeout'] = 30
    

七、扩展应用

  1. 动态表结构生成
  2. 实时JSON流处理
  3. 与APIs集成实现自动化数据管道

最佳实践:生产环境建议使用SQLAlchemy等ORM工具,增强代码可维护性。


总结

通过本教程,您已掌握:

  • JSON数据解析技巧
  • Python-MySQL高效交互
  • 批量数据处理方法
  • 异常处理机制

网站公告

今日签到

点亮在社区的每一天
去签到