向MySQL数据库中存入json类型数据

2023-05-16

源文章地址:https://www.linuxidc.com/Linux/2017-03/141865.htm

0.说明

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

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

  • MySQL表中需要保证存储json数据的列类型为BLOB;
  • 使用sql语句时,使用MySQLdb.excape_string函数来对json数据进行转义;
  • 查询数据时,将结果使用json.loads就能够得到原来的Python数据类型;

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

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

(1)数据存储

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

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              |
+-------------------+
2 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    |                 |
+-------+--------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
  • 2.使用Python生成json数据类型

>>> 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数据库

>>> 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数据--[重点]

>>> sql = tsql.format(json=MySQLdb.escape_string(d_json));
>>> sql
'insert into jsondata(data) values(\'{\\"name\\": \\"xpleaf\\"}\')'


  • 6.执行sql语句

>>> cur.execute(sql)
1L
>>> cur.execute(sql)
1L

(2)数据查询

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

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

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

>>> 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数据

>>> 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字典类型数据。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向MySQL数据库中存入json类型数据 的相关文章

  • ubuntu安装nerd font字体

    步骤 1 下载nerd font字体文件到某个文件夹 在网址https www nerdfonts com font downloads xff0c 找到JetBrainsMono xff0c DroidSansMono xff0c Dej
  • OpenStack计费项目CloudKitty的强化及运用

    本文转自Openstack中国社区Openstack计费项目CloudKitty的强化及运用 本文作者 xff1a Li Xiangjun 在OpenStack开发社区向 Big Tent 模式全面转型之际 xff0c 一个新的项目 Clo
  • Winpcap数据包的抓取及还原

    winpcap技术手册 xff0c 除了安装文件里doc文件下有个帮助 xff0c 这里在给一个 xff1a http www ferrisxu com WinPcap html index html 这里我们用pcap next ex 函
  • 柱面坐标变换

    在图像拍摄点固定的情况下 xff0c 对图像做柱面投影变换 xff0c 再进行配准会得到较为理想的效果 如图所示 xff0c 点P在相机所处的坐标系下的坐标为 xff0c 在像素坐标系下表示为P xff08 x xff0c y xff09
  • 几行Python代码教你zip打包

    码农一方面是码代码 xff0c 另一方面是布署服务 xff0c 传到服务器时 xff0c 文件数据较多时 xff0c 直接通过文件传输概率性会丢失文件 xff0c 最好是先压成zip包 xff0c 再传输 但是 xff0c zip包中的文件
  • 推荐一款强大的OCR工具

    大家好 xff0c 我是 jonssonyan xff0c 今天我想向大家介绍一款强大的 OCR 工具 Umi OCR 以下是它的开源地址 Umi OCR GitHub xff1a https github com hiroi sora U
  • ArXiv简介以及论文提交

    arXiv网站简介 arXiv是一个收集物理学 数学 计算机科学 生物学与数理经济学的论文预印本的网站 其中arXiv发音同 archive xff0c 因为 X 代表希腊字母 xff0c 国际音标为 kai 它于1991年8月14日成立
  • Vue中axios请求报错

    问题 xff1a axios请求成功但是还是进入catch 在请求后端接口后 xff0c 发现请求成功了 xff0c 但是却报错了 在经过排查之后 xff0c 发现后端返回的数据结构更改了 xff0c 所以导致成功的代码块内部出现错误 xf
  • lsnrctl command not found

    在linux安装完oracle时 当你遇到lsnrctl command not found等问题都不能用时 会有几种情况 1 首先你先查看下环境变量里面有没有加入oracle的配置 执行 echo ORACLE HOME 没有的话 你执行
  • CNC加工中心程序代码大全,你还不收藏吗?

    数控程序中字母的含义 O xff1a 程序号 xff0c 设定程序号 N xff1a 程序段号 xff0c 设定程序顺序号 G xff1a 准备功能 X Y Z xff1a 尺寸字符 xff0c 轴移动指令 A B C U V W xff1
  • 413 Request Entity Too Large(请求实体太大)

    最近开发时遇到了上传失败的情况 xff0c 提示 xff1a 413 Request Entity Too Large xff08 请求实体太大 xff09 因为上传通过代理服务器Nginx xff0c 因此可以 修改代理服务器Nginx
  • Photos(PHFetchResultChangeDetails)

    Photos PHChange Photos PHObjectChangeDetails Photos PHFetchResultChangeDetails PHFetchResultChangeDetails主要用于记录PHFetchRe
  • 远程桌面连接的时候 屏幕一闪就没了 然后不能连接上

    重启本地两个远程服务组件Remote Desktop Services和Remote Desktop Services usermode Port Redirector 如果还不行 xff0c 按下面的试试 启动注册表编辑器 Regedt3
  • 关于codeforces比赛规则介绍(转载)

    Codeforces 简称 cf 所以谈论cf的时候经常被误会成TX的那款游戏 网址 codeforces com 这是一个俄国的算法竞赛网站 由来自萨拉托夫州立大学 由Mike Mirzayanov领导的一个团队创立和维护 是一个举办比赛
  • 自制书立

    店里卖的书立简直贵的离谱 xff0c 不就是一个直角的铁片吗 xff0c 要那么多钱 索性自己做一个 xff0c 就用最便宜的衣架 xff0c 不到一元钱搞定 xff01 把衣架弯成直角 换个角度 xff0c 再来一张 完事了 xff0c
  • 连载:面向对象葵花宝典:思想、技巧与实践(27) - 动态模型设计

    类模型 指导我们如何声明类 xff0c 动态模型 指导我们如何实现类 xff01 动态模型设计一般都是在类模型设计完成后才开始 xff0c 因为动态模型设计的时候一般都需要用到类模型中的类 相对类模型来说 xff0c 动态模型要相对简单一些
  • C语言经典100题——输出“魔方阵“

    lt 1 gt 题目描述 输出 魔方阵 xff0c 所谓魔方阵是指它的每一行 每一列和对角线之和均相等 例如 xff1a 8 1 6 3 5 7 4 9 2 要求输出1 n 2的自然数构成的魔方阵 lt 2 gt 思路分析 将1放在第1行中
  • MFC中调用std::cout

    std cout很好用 xff0c 但是在MFC中 xff0c 一般的变量值输出MessageBox 来显示 xff0c 很不方便 下面就实战一下利用std cout来输出 1 利用VC 6 0 MFC App Wizard新建一个基于对话
  • estimatedRowHeight 与 self sizing cells

    estimatedRowHeight 为什么要引入estimatedRowHeight呢 xff1f 顾名思义就是预估高度 在预估高度之前 xff0c 与高度相关的属性及方法比较常用的有以下两个 xff1a rowHeight 这个属性适合
  • linux小白 折腾debian8笔记1 --Debian 8 安装与初步配置

    前言 我只是一个普通的使用linux的小白 xff0c 初步的使用ubuntu xff0c 开始折腾起Debian8 在折腾的过程中学到了不少的东西 xff0c 有感而发 xff0c 记录一下 ps 我是用我的Hp笔记本装的 因此个人不同的

随机推荐

  • iOS高德地图路径选择

    新公司的一个物流项目用到了高德地图的路径规划导航 之前没用过高德的路径规划 xff0c 最麻烦的是画出路径 xff0c 以及多路径情况下的点击选择路径 其实画出路径的算法在高德地图的相关demo里面有 xff0c 只要抠出来就行 我要说的是
  • 今日解决新安装的centos 8安装MYSQL提示未找到匹配的参数: mysql-community-server

    今日新安装的centos在安装mysql community server时一直报错 xff1a root 64 centos8 yum repos d yum y install mysql community server 上次元数据过
  • ios学习--给UITableViewCell动态调整高度

    在网上看到有人如此实现动态调整高度 xff1a 点击 不至于为了获取高度创建一个不需要的cell 主要有两个地方需要调整高度 xff0c 一个是自己创建的UILabel或其它 xff0c 另一个就是cell的高度 在创建cell的地方只需要
  • 【HTML5】-04 图片与链接

    图片与链接 xff1a lt DOCTYPE html gt lt html gt lt head gt lt title gt 第二页 lt title gt lt head gt lt body gt lt p gt 1 图片插入 xf
  • lanzous.com网站无法访问求解决

    一般的分享链接是https XXXXX lanzous com sssss 直接把前面的https XXXXX lanzous com改成https pan lanzou com就行 最后链接样式就是https pan lanzous co
  • C++风格_格式

    1 行长度 每一行代码字符数不超过 80 xff08 这个数是Google的指南中的 xff09 80 个字符是最大值 如果无法在不伤害易读性的条件下进行断行 那么注释行可以超过 80 个字符 这样可以方便复制粘贴 例如 带有命令示例或 U
  • TCP Server处理多Client请求的方法—非阻塞accept与select

    参看基于TCP UDP的socket代码 xff0c 同一时间Server只能处理一个Client请求 xff1a 在使用当前连接的socket和client进行交互的时候 xff0c 不能够accept新的连接请求 为了使Server能够
  • jupyter notebook下识别出虚拟环境

    在需要的虚拟环境里安装 conda span class token function install span c conda forge ipykernel 这样启动jupyter notebook就可以看到了 也可以在安装虚拟环境时就
  • VMware Ubuntu20.04设置共享文件夹

    虚拟机设置好共享文件夹后进入系统可能会找不到 xff0c 这时需要经过如下操作才能在系统中看到 vmware hgfsclient 可以在Terminal里显示出已经设置好的共享文件夹 span class token function s
  • Vim技巧-多行缩进

    向前或向后缩进4个空格 按shift 43 v组合键进入Visual Line模式 xff0c 可使用方向键选择多行 xff1b 按 lt 或 gt xff0c 进行向前或向后缩进 注 xff1a 有些设置为缩进一个Tab单位 向前或向后缩
  • nginx 配置git server http clone服务,并通过反向代理访问

    要做一个通过踏板机的ip进行git代码的上传与下载 xff0c 所以思路不是踏板机上安装nginx反向代理 xff0c 并且linux服务器也需要提供http方式的访问git xff0c ssh方向不知道怎么进行反向代理 linux服务器也
  • ESP8266 Windows开发环境搭建(IDE1.5)好用不骗人

    最近一个项目需要用ESP8266 xff0c 找了很多文章进行环境搭建编译都很问题 xff0c 不是make Menuconfig 不出来 xff0c 就是编译报错 xff0c 现总结如下 我在自己电脑上没弄出来 xff0c 就安装了一个虚
  • React-Native run-android报错以及adb 命令不识别

    在遇到adb 命令不识别 xff0c 或者genymotion的模拟器不识别 xff0c 找不到的问题 都是genymotion配置的不正确 打开genymotion的adb设置 xff0c androidSDK的配置选择自己下载的andr
  • android 浏览器 打开本地html文件的方法

    android 浏览器 打开本地html文件的方法有些html文件放在本地磁盘和sdcard xff0c 如何用打开这个网页呢 xff1f 这种应用在测试时非常有用 有 xff12 个方法 xff1a xff11 使用文件管理器 如ES等
  • 中国各主要大城市经纬度数据

    lt p gt 1 中国各主要大城市经纬度数据 xff1a lt br gt 北京市市中心经纬度 116 41667 39 91667 lt br gt 上海市区经纬度 121 43333 34 50000 lt br gt 天津市区经纬度
  • C# 中关闭当前线程的四种方式

    net类库已经帮助我们实现了窗口的关闭 xff0c 如果此窗口是系统的主窗口 xff0c 关闭此窗口即应该退出了整个应用程序 但事实上有时候并不是这样的 xff0c 关闭窗口 xff0c 只是停止了当前窗口的消息循环 系统主窗口 xff0c
  • linux+live555搭建rtsp服务器

    linux 43 live555搭建rtsp服务器 下载并解压接下来生成Make文件 xff0c 生成需要的文件在live文件夹下make之后会在当前目录下生成mediaServer 文件夹 xff0c 其中有一个live555MediaS
  • Navicat for SQLite 15中文版

    教程 xff1a 1 下载软件压缩包并且解压文件获得安装文件以及文件 2 双击exe文件开始安装并且选择同意用户协议 3 选择软件安装位置 4 软件安装读条中请耐心等待 5 软件安装完成 xff0c 资源地址 xff1a Navicat f
  • ascs 简明开发教程(十八):定时器

    QQ交流群 xff1a 198941541 前面讲过 xff0c ascs支持定时器 xff08 由asio实现 xff09 xff0c socket和object pool都继承自timer对象 xff0c 所以你几乎可以在任意地方使用定
  • 向MySQL数据库中存入json类型数据

    源文章地址 xff1a https www linuxidc com Linux 2017 03 141865 htm 0 说明 因为出于个人项目的需要 xff0c 获取到的数据都是json类型的 xff0c 并且都要存入MySQL数据库中