如何将Json格式的数据写入数据库?

打印 上一主题 下一主题

主题 959|帖子 959|积分 2877

将Json格式的数据写入数据库

关于.Json的魂魄三问:是什么?为什么?怎么用?

1.是什么?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的文本形式表示数据。JSON 格式由键值对构成,其中键是字符串,值可以是字符串、数字、布尔值、数组、对象(另一个 JSON 对象)或 null。
长这样:三国演义.json
  1. [
  2.     {
  3.         "name": "刘备",
  4.         "age": 40,
  5.         "city": "河北",
  6.         "number":2
  7.     },
  8.     {
  9.         "name": "关羽",
  10.         "age": 39,
  11.         "city": "桃园",
  12.         "number":3
  13.     },
  14.     {
  15.         "name": "张飞",
  16.         "age": 38,
  17.         "city": "桃园",
  18.         "number":4
  19.     }
  20. ]
复制代码
2.为什么?

JSON 格式具有以下特点:

  • 易于阅读和编写:JSON 使用了简便的文本格式,使得人们可以轻松地阅读和编写 JSON 数据。
  • 数据结构简单:JSON 数据结构非常简单,由键值对构成,每个键值对之间用逗号分隔,键和值之间用冒号分隔。
  • 支持多种数据范例:JSON 可以表示字符串、数字、布尔值、数组、对象和 null 等多种数据范例。
  • 与编程语言无关:JSON 是一种与编程语言无关的数据格式,几乎所有编程语言都支持剖析和生成 JSON 格式的数据。
  • 适用于网络传输:由于 JSON 格式轻量级且易于剖析,因此非常适用于网络传输,常用于在客户端和服务器之间传递数据。
  • 可嵌套:JSON 支持对象的嵌套,可以在对象中嵌套数组,也可以在数组中嵌套对象,从而构建复杂的数据结构
总的来说,JSON 格式是一种简单、灵活且易于使用的数据交换格式,被广泛应用于 Web 开发、API 接口设计、设置文件等范畴。
3.怎么用?

1.起首要介绍三个函数:
  1. import json
  2. json.dump(x1,x2)#将Python对象序列化为JSON格式的数据,并将其写入文件中
  3. json.loads(json_str)#将JSON格式的字符串解析为Python对象
  4. json.load(x)#用于从文件对象中读取JSON数据并解析为 Python对象的函数
复制代码
从上文也能看出来json.loads()与json.load()的区别在于:一个吸收文件对象作为参数,一个吸收字符串作为参数。
2.接下来讲讲返回值问题,是一个小细节:
json.loads(data) 函数会根据传入的 JSON 格式的字符串 data 的内容来决定返回的数据范例。如果 JSON 字符串表示一个 JSON 数组(用方括号 [] 包围的数据集合),则返回一个 Python 列表;如果 JSON 字符串表示一个 JSON 对象(用花括号 {} 包围的键值对集合),则返回一个 Python 字典。eg:
  1. data_a =
  2. [
  3.     {"name": "John", "age": 30},
  4.     {"name": "Alice", "age": 25},
  5.     {"name": "Bob", "age": 35}
  6. ]
  7. data_b ={
  8. "name": "John",
  9. "age": 30,
  10. "city": "New York"
  11. }
复制代码


3.实战场景1:如今你需要将当地.Json格式的文件内容写入数据库,只有一个文件,文件长这样:data.json
  1. [
  2.     {
  3.         "name": "孙悟空",
  4.         "age": 500,
  5.         "city": "五指山",
  6.         "number":2
  7.     },
  8.     {
  9.         "name": "唐僧",
  10.         "age": 25,
  11.         "city": "东土大唐",
  12.         "number":1
  13.     },
  14.     {
  15.         "name": "猪八戒",
  16.         "age": 499,
  17.         "city": "天宫",
  18.         "number":3
  19.     },
  20.     {
  21.         "name": "沙和尚",
  22.         "age": 498,
  23.         "city": "流沙河",
  24.         "number":4
  25.     },
  26.     {
  27.         "name": "白龙马",
  28.         "age": 15,
  29.         "city": "东海",
  30.         "number":5
  31.     }
  32. ]
复制代码
数据库中应该长这样:

附源码:
  1. import json
  2. import pymysql
  3. def read_json_file(file_path):
  4.     with open(file_path, 'r',encoding='utf-8') as f:
  5.         data = json.load(f)
  6.         # print(data)
  7.     return data
  8. def insert_into_db(data, dbname, pwd):
  9.     con = pymysql.connect(
  10.         host='127.0.0.1',
  11.         port=3306,
  12.         user='root',
  13.         password=pwd,
  14.         db=dbname,
  15.         charset='utf8'
  16.     )
  17.     cur = con.cursor()
  18.     for item in data:
  19.         name =item['name']
  20.         age = item['age']
  21.         city = item['city']
  22.         number = item['number']
  23.         try:
  24.             sql = 'insert into users(name,age,city,number ) values(%s,%s,%s,%s)'
  25.             cur.execute(sql,(name,age,city,number))
  26.             con.commit()
  27.             print(f'{name}新增成功')
  28.         except pymysql.err.IntegrityError as e:
  29.             print(f'{name} 新增数据失败:{e}')
  30.     cur.close()
  31.     con.close()
  32. if __name__ == '__main__':
  33.     data = read_json_file('data.json')
  34.     insert_into_db(data,'test','123456')
复制代码
  1. #sql语句:
  2. CREATE TABLE users (
  3.     id INT AUTO_INCREMENT PRIMARY KEY,
  4.     name VARCHAR(255),
  5.     age INT,
  6.     city VARCHAR(255),
  7.     number INT
  8. );
复制代码
4.实战场景2:如今你需要将多个当地.Json格式的文件内容写入数据库,文件名:data.json,data1…json…等等,应该如何实现呢?
附源码:
  1. import os,pymysql,json
  2. def read_all_files(path):
  3.     filename = os.listdir(path)
  4.     files_list = []
  5.     for file in filename:
  6.         if file.endswith('.json'):
  7.             files_list.append(os.path.join(path, file))
  8.     data = []
  9.     for file in files_list:
  10.         with open(file,'r',encoding='utf8') as f:
  11.             data.extend(json.load(f))
  12.     return data
  13. def insert_into_db(data,db_name,pwd):
  14.     con = pymysql.connect(
  15.         host='127.0.0.1',
  16.         port=3306,
  17.         user='root',
  18.         password=pwd,
  19.         db=db_name,
  20.         charset='utf8'
  21.     )
  22.     cur = con.cursor()
  23.     for item in data:
  24.         name = item['name']
  25.         age = item['age']
  26.         city = item['city']
  27.         number = item['number']
  28.         try:
  29.             sql = "insert into users(name,age,city,number ) values(%s,%s,%s,%s)"
  30.             cur.execute(sql,(name,age,city,number))
  31.             con.commit()
  32.             print(f'{name}新增成功!')
  33.         except pymysql.err.IntegrityError as e:
  34.             print(f'{name}新增失败,该{name}已存在')
  35.     cur.close()
  36.     con.close()
  37. if __name__ == '__main__':
  38.     data = read_all_files(r'D:\TextToSql')#替换成你的路文件所在目录
  39.     insert_into_db(data,'test','123456')
复制代码
这些是python Web开发的基础,.json文件在一样平常中用的特殊多,以是一点要弄明确!在现实中.json保存的数据也很复杂,再复杂也是一样的处理方法,明天更新一个复杂的.json文件写入数据库,敬请等待!!!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

光之使者

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表