使用Python向MySQL数据库中存入json类型数据

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

    因为出于个人项目的需要,获取到的数据都是json类型的,并且都要存入MySQL数据库中,因为json类型数据不像一般的文本数据,所以在存入MySQL时需要注意的问题很多。

    在网上找了很多方法,整理了一下比较实用可靠的,总结下来就是下面的过程:

  • MySQL表中需要保证存储json数据的列类型为BLOB;

  • 使用sql语句时,使用MySQLdb.excape_string函数来对json数据进行转义;

  • 查询数据时,将结果使用json.loads就能够得到原来的Python数据类型;

    下面就来实战一下,实际上,在我的需求中,我需要将Python中的字典存入MySQL,所以只能先将其转换为json来处理。




1.实战存储json数据到MySQL中


(1)数据存储


  • 1.创建能存储json数据类型的数据库表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mysql>  create  table  jsondata
     -> (
     -> id  int (6) auto_increment  primary  key ,
     -> data blob(1024)
     -> );
Query OK, 0  rows  affected (0.25 sec)
 
mysql> show tables;
+ -------------------+
| Tables_in_spyinux |
+ -------------------+
| jsondata          |
| test              |
+ -------------------+
rows  in  set  (0.00 sec)
 
mysql> describe jsondata;
+ -------+--------+------+-----+---------+----------------+
| Field | Type   |  Null  Key  Default  | Extra          |
+ -------+--------+------+-----+---------+----------------+
| id    |  int (6) |  NO    | PRI |  NULL     | auto_increment |
| data  | blob   | YES  |     |  NULL     |                |
+ -------+--------+------+-----+---------+----------------+
rows  in  set  (0.00 sec)
  • 2.使用Python生成json数据类型

1
2
3
4
5
6
7
8
9
>>>  import  json
>>> d  =  { 'name' 'xpleaf' }
>>>  type (d)
< type  'dict' >
>>> d_json  =  json.dumps(d)
>>> d_json
'{"name": "xpleaf"}'
>>>  type (d_json)
< type  'str' >
  • 3.使用MySQLdb连接MySQL数据库

1
2
>>>  import  MySQLdb
>>> conn  =  m.connect(host = 'localhost' , port = 3306 , user = 'root' , passwd = '123456' , db = 'spyinux' )>>> cur  =  conn.cursor()
  • 4.写原生sql语句

1
>>> tsql  =  "insert into jsondata(data) values('{json}')" ;
  • 5.使用MySQLdb方法转义json数据

1
2
3
>>> sql  =  tsql. format (json = MySQLdb.escape_string(d_json));
>>> sql
'insert into jsondata(data) values(\'{\\"name\\": \\"xpleaf\\"}\')'
  • 6.执行sql语句

1
2
3
4
>>> cur.execute(sql)
1L
>>> cur.execute(sql)
1L


(2)数据查询


    上面的操作完成之后,我们已经成功将json的数据存取到MySQL中,关键是能不能将该数据取出来,并且最后还原成Python的字典类型类型。


  • 1.先在MySQL中查询存储的数据

1
2
3
4
5
6
7
mysql>  select  from  jsondata;
+ ----+--------------------+
| id | data               |
+ ----+--------------------+
|  1 | { "name" "xpleaf" } |
+ ----+--------------------+
1 row  in  set  (0.00 sec)
  • 2.在Python交互器中查询数据

1
2
3
4
5
6
7
8
9
10
>>> cur.execute( 'select * from jsondata' );
1L
>>> mydata  =  cur.fetchall()
>>> mydata
(( 1L '{"name": "xpleaf"}' ),)
>>> mydata  =  mydata[ 0 ][ 1 ]
>>> mydata
'{"name": "xpleaf"}'
>>>  type (mydata)
< type  'str' >
  • 3.使用json.loads解析json数据

1
2
3
4
5
6
7
8
9
>>> mydata  =  json.loads(mydata)
>>> mydata
{u 'name' : u 'xpleaf' }
>>>  type (mydata)
< type  'dict' >
>>> mydata[ 'name' ]
u 'xpleaf'
>>> mydata.get( 'name' )
u 'xpleaf'


    可以看到,最开始我们使用Pythonn创建了一个字典类型的数据,之后将其转换为json数据类型,以便于存入MySQL中,在这个过程中需要使用MySQL.escape_string方法来对json数据进行转义,最后查询数据时,我们使用json.loads方法来解析json数据,从而得到我们最开始存储的Python字典类型数据。




2.在实际当中的应用


    显然,如果在使用Python的过程中,需要将字典或其它数据类型的数据存入到MySQL中时,先将其转换为json类型数据,再使用上面的方法,就非常简便了。





本文转自 xpleaf 51CTO博客,原文链接:http://blog.51cto.com/xpleaf/1905368,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
159 68
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
536 15
探索Python中的异步编程:从asyncio到异步数据库操作
在这个快节奏的技术世界里,效率和性能是关键。本文将带你深入Python的异步编程世界,从基础的asyncio库开始,逐步探索到异步数据库操作的高级应用。我们将一起揭开异步编程的神秘面纱,探索它如何帮助我们提升应用程序的性能和响应速度。
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
102 4
SQL与Python集成:数据库操作无缝衔接22.bijius.com
自动化数据预处理:使用Python库(如Pandas)自动清洗、转换和准备数据,为机器学习模型提供高质量输入。 实时数据处理:集成Apache Kafka或Amazon Kinesis等流处理系统,实现实时数据更新和分析。
|
5月前
|
springboot当中ConfigurationProperties注解作用跟数据库存入有啥区别
`@ConfigurationProperties`注解和数据库存储配置信息各有优劣,适用于不同的应用场景。`@ConfigurationProperties`提供了类型安全和模块化的配置管理方式,适合静态和简单配置。而数据库存储配置信息提供了动态更新和集中管理的能力,适合需要频繁变化和集中管理的配置需求。在实际项目中,可以根据具体需求选择合适的配置管理方式,或者结合使用这两种方式,实现灵活高效的配置管理。
64 0
MySQL JSON数据存储结构与操作
通过本文的介绍,我们了解了MySQL中JSON数据类型的基本操作、常用JSON函数、以及如何通过索引和优化来提高查询性能。JSON数据类型为存储和操作结构化数据提供了灵活性和便利性,在现代数据库应用中具有广泛的应用前景。希望本文对您在MySQL中使用JSON数据类型有所帮助。
628 0
SQL与Python集成:数据库操作无缝衔接2a.bijius.com
Python与SQL的集成是现代数据科学和工程实践的核心。通过有效的数据查询、管理与自动化,可以显著提升数据分析和决策过程的效率与准确性。随着技术的不断发展,这种集成的应用场景将更加广泛,为数据驱动的创新提供更强大的支持。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等