大家好,欢迎来到IT知识分享网。
将Json格式的数据写入数据库
关于.Json的灵魂三问:是什么?为什么?怎么用?
1.是什么?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的文本形式表示数据。JSON 格式由键值对组成,其中键是字符串,值可以是字符串、数字、布尔值、数组、对象(另一个 JSON 对象)或 null。
长这样:三国演义.json
[ {
"name": "刘备", "age": 40, "city": "河北", "number":2 }, {
"name": "关羽", "age": 39, "city": "桃园", "number":3 }, {
"name": "张飞", "age": 38, "city": "桃园", "number":4 } ]
2.为什么?
JSON 格式具有以下特点:
- 易于阅读和编写:JSON 使用了简洁的文本格式,使得人们可以轻松地阅读和编写 JSON 数据。
- 数据结构简单:JSON 数据结构非常简单,由键值对组成,每个键值对之间用逗号分隔,键和值之间用冒号分隔。
- 支持多种数据类型:JSON 可以表示字符串、数字、布尔值、数组、对象和 null 等多种数据类型。
- 与编程语言无关:JSON 是一种与编程语言无关的数据格式,几乎所有编程语言都支持解析和生成 JSON 格式的数据。
- 适用于网络传输:由于 JSON 格式轻量级且易于解析,因此非常适用于网络传输,常用于在客户端和服务器之间传递数据。
- 可嵌套:JSON 支持对象的嵌套,可以在对象中嵌套数组,也可以在数组中嵌套对象,从而构建复杂的数据结构
总的来说,JSON 格式是一种简单、灵活且易于使用的数据交换格式,被广泛应用于 Web 开发、API 接口设计、配置文件等领域。
3.怎么用?
1.首先要介绍三个函数:
import json json.dump(x1,x2)#将Python对象序列化为JSON格式的数据,并将其写入文件中 json.loads(json_str)#将JSON格式的字符串解析为Python对象 json.load(x)#用于从文件对象中读取JSON数据并解析为 Python对象的函数
从上文也能看出来json.loads()与json.load()的区别在于:一个接收文件对象作为参数,一个接收字符串作为参数。
2.接下来讲讲返回值问题,是一个小细节:
json.loads(data) 函数会根据传入的 JSON 格式的字符串 data 的内容来决定返回的数据类型。如果 JSON 字符串表示一个 JSON 数组(用方括号 [] 包围的数据集合),则返回一个 Python 列表;如果 JSON 字符串表示一个 JSON 对象(用花括号 {} 包围的键值对集合),则返回一个 Python 字典。eg:
data_a = [ {
"name": "John", "age": 30}, {
"name": "Alice", "age": 25}, {
"name": "Bob", "age": 35} ] data_b ={
"name": "John", "age": 30, "city": "New York" }
3.实战场景1:现在你需要将本地.Json格式的文件内容写入数据库,只有一个文件,文件长这样:data.json
[ {
"name": "孙悟空", "age": 500, "city": "五指山", "number":2 }, {
"name": "唐僧", "age": 25, "city": "东土大唐", "number":1 }, {
"name": "猪八戒", "age": 499, "city": "天宫", "number":3 }, {
"name": "沙和尚", "age": 498, "city": "流沙河", "number":4 }, {
"name": "白龙马", "age": 15, "city": "东海", "number":5 } ]
import json import pymysql def read_json_file(file_path): with open(file_path, 'r',encoding='utf-8') as f: data = json.load(f) # print(data) return data def insert_into_db(data, dbname, pwd): con = pymysql.connect( host='127.0.0.1', port=3306, user='root', password=pwd, db=dbname, charset='utf8' ) cur = con.cursor() for item in data: name =item['name'] age = item['age'] city = item['city'] number = item['number'] try: sql = 'insert into users(name,age,city,number ) values(%s,%s,%s,%s)' cur.execute(sql,(name,age,city,number)) con.commit() print(f'{
name}新增成功') except pymysql.err.IntegrityError as e: print(f'{
name} 新增数据失败:{
e}') cur.close() con.close() if __name__ == '__main__': data = read_json_file('data.json') insert_into_db(data,'test','')
#sql语句: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT, city VARCHAR(255), number INT );
4.实战场景2:现在你需要将多个本地.Json格式的文件内容写入数据库,文件名:data.json,data1…json…等等,应该如何实现呢?
附源码:
import os,pymysql,json def read_all_files(path): filename = os.listdir(path) files_list = [] for file in filename: if file.endswith('.json'): files_list.append(os.path.join(path, file)) data = [] for file in files_list: with open(file,'r',encoding='utf8') as f: data.extend(json.load(f)) return data def insert_into_db(data,db_name,pwd): con = pymysql.connect( host='127.0.0.1', port=3306, user='root', password=pwd, db=db_name, charset='utf8' ) cur = con.cursor() for item in data: name = item['name'] age = item['age'] city = item['city'] number = item['number'] try: sql = "insert into users(name,age,city,number ) values(%s,%s,%s,%s)" cur.execute(sql,(name,age,city,number)) con.commit() print(f'{
name}新增成功!') except pymysql.err.IntegrityError as e: print(f'{
name}新增失败,该{
name}已存在') cur.close() con.close() if __name__ == '__main__': data = read_all_files(r'D:\TextToSql')#替换成你的路文件所在目录 insert_into_db(data,'test','')
这些是python Web开发的基础,.json文件在日常中用的特别多,所以一点要弄明白!在现实中.json保存的数据也很复杂,再复杂也是一样的处理方法,明天更新一个复杂的.json文件写入数据库,敬请期待!!!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/110736.html

