Python3实现将本地JSON大数据文件写入MySQL数据库的方法


Posted in Python onJune 13, 2018

本文实例讲述了Python3实现将本地JSON大数据文件写入MySQL数据库的方法。分享给大家供大家参考,具体如下:

最近导师给了一个yelp上的评论数据,数据量达到3.55个G,如果进行分析时直接使用本地文件,选择python来分析,那么效率是非常低的;另一方面使用SQL来储存文本文件最为安全,之前使用CSV,txt存储的文本文件最后莫名其妙地出现一些奇怪字符,导致读取数据分割时出现错乱。下面给出一个简单的代码,将本地JSON文件内容存入数据库。

说明:python版本为3.5,使用第三方库为pymysql。因为数据量比较大,不能一次性读取到内存(否则内存报错),这里使用逐行读取的方式。数据库先创建后再使用以下代码;

import json
import pymysql
# 读取review数据,并写入数据库
# 导入数据库成功,总共4736897条记录
def prem(db):
  cursor = db.cursor()
  cursor.execute("SELECT VERSION()")
  data = cursor.fetchone()
  print("Database version : %s " % data) # 结果表明已经连接成功
  cursor.execute("DROP TABLE IF EXISTS review") # 习惯性
  sql = """CREATE TABLE review (
       review_id VARCHAR(100),
       user_id VARCHAR(100),
       business_id VARCHAR(200),
       stars INT,
       text VARCHAR(10000) NOT NULL,
       useful INT,
       funny INT,
       cool INT)"""
  cursor.execute(sql) # 根据需要创建一个表格
def reviewdata_insert(db):
  with open('E:/data/yelp_data/dataset/review.json', encoding='utf-8') as f:
    i = 0
    while True:
      i += 1
      print(u'正在载入第%s行......' % i)
      try:
        lines = f.readline() # 使用逐行读取的方法
        review_text = json.loads(lines) # 解析每一行数据
        result = []
        result.append((review_text['review_id'], review_text['user_id'],      review_text['business_id'],review_text['stars'], review_text['text'], review_text['useful'],
              review_text['funny'], review_text['cool']))
        print(result)
        inesrt_re = "insert into review(review_id, user_id, business_id, stars, text, useful,      funny, cool) values (%s, %s, %s, %s,%s, %s,%s, %s)"
        cursor = db.cursor()
        cursor.executemany(inesrt_re, result)
        db.commit()
      except Exception as e:
        db.rollback()
        print(str(e))
        break
if __name__ == "__main__": # 起到一个初始化或者调用函数的作用
  db = pymysql.connect("localhost", "root", "password(你的密码)", "数据库名称", charset='utf8')
  cursor = db.cursor()
  prem(db)
  reviewdata_insert(db)
  cursor.close()
Python 相关文章推荐
小议Python中自定义函数的可变参数的使用及注意点
Jun 21 Python
使用python装饰器计算函数运行时间的实例
Apr 21 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
Jun 14 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
Jan 03 Python
python3 使用traceback定位异常实例
Mar 09 Python
python requests包的request()函数中的参数-params和data的区别介绍
May 05 Python
Python基于字典实现switch case函数调用
Jul 22 Python
实战Python爬虫爬取酷我音乐
Apr 11 Python
Python基本的内置数据类型及使用方法
Apr 13 Python
解决Mac安装scrapy失败的问题
Jun 13 #Python
mac安装scrapy并创建项目的实例讲解
Jun 13 #Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 #Python
基于pip install django失败时的解决方法
Jun 12 #Python
基于Python pip用国内镜像下载的方法
Jun 12 #Python
pip安装时ReadTimeoutError的解决方法
Jun 12 #Python
解决pip install的时候报错timed out的问题
Jun 12 #Python
You might like
用PHP实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
如何用php生成扭曲及旋转的验证码图片
2013/06/07 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
Yii2.0 RESTful API 基础配置教程详解
2018/12/26 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
js href的用法
2010/05/13 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
2015/10/10 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
d3.js 地铁轨道交通项目实战
2019/11/27 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
python解包概念及实例
2021/02/17 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
化学系大学生自荐信范文
2014/03/01 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js