本文主要向大家介绍了MySQL数据库之python json及mysql读取json文件存sql等问题 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

preface: 近期帮师兄处理json文件,须要读到数据库里面,以备其兴许从数据库读取数据。数据是关于yelp站点里面的: https://github.com/Yelp/dataset-examples,http://www.yelp.com/dataset_challenge/. 涉及到一些json和sql的问题,记录下。

一、python sql安装

python 自带轻型数据库sqlite,只是用不了。须要mysql才行。pip安装mysql失败。easy_install安装也失败。这不科学。后经过同仁的帮忙。用conda成功安装,这什么鬼。好吧。查了下是python自带的包管理器conda。

pip install MySQLdb

easy_install MySQLdb

pip install MySQL

easy_install MySQL

ipython

which python

sudo conda search mysql

conda search mysql

conda install mysql-python

二、处理json数据

python有自带解析json的包,如同解析html的beautifulsoup, 解析xml的xml包等等。用json.loads()函数可破。下面几句代码可破。

import json

import codecs

f = codecs.open(file_name,encoding = "utf-8")

for line in f:

line = line.strip("\n")

line_dict = json.loads(line)

须要注意的是:

1.卤主用的是codecs读入文件。以前以为

with codecs.open(file_name,encoding = "utf-8") as f:

text = f.readlines()

通过readlines()是一行一行的读入,可是这次遇到1.4G的json文件时。内存溢出。转为直接用上面的,而非用readlines()函数读。

2.json.loads()传入的參数须要是json字符串。卤主一行一行的读入,传入json字符串,解析后。是一个字典。接下来就优点理了。看个人须要进行分析。

#============================

方法2:将整个json文件作为參数传入到

f = file(file_name)

s = json.load(f)

但这样会遇到ValueError:Extra data错误,查了下资料,说是多个json对象的问题。这不废话么。一个目录里肯定多个json对象。stackoverflow里面解释的非常具体http://stackoverflow.com/questions/21058935/python-json-loads-shows-valueerror-extra-data。

>>> json.loads('{}')

{}

>>> json.loads('{}{}') # == json.loads(json.dumps({}) + json.dumps({}))

Traceback (most recent call last):

File "", line 1, in File "C:\Python27\lib\json\__init__.py", line 338, in loads

return _default_decoder.decode(s)

File "C:\Python27\lib\json\decoder.py", line 368, in decode

raise ValueError(errmsg("Extra data", s, end, len(s)))

ValueError: Extra data: line 1 column 3 - line 1 column 5 (char 2 - 4)

>>> dict1 = {}

>>> dict2 = {}

>>> json.dumps([dict1, dict2])

'[{}, {}]'

>>> json.loads(json.dumps([dict1, dict2]))

[{}, {}]

卤主没用方法2。故没有深究。

三、存sql

一開始没试过。等真正查找博客编写自己的代码的时候比自己想象的简单。直接上有凝视的代码。

import MySQLdb as mdb

#须要创建数据库yelp_dataset_challenge_academic_daaset

conn = mdb.connect(host = 'XXX.XX.XX.XX', user = 'XXX', passwd = 'XX', db = 'yelp_dataset_challenge_academic_daaset')

cur  = conn.cursor()#初始化游标

#conn.set_character_set("utf-8")

cur.execute('SET NAMES utf8;')

cur.execute('SET CHARACTER SET utf8;')

cur.execute('SET character_set_connection=utf8;')

#===============建表,先删除已存在的记录。表本身不删除。不用drop,用delete

table_name = "yelp_academic_dataset_checkin"

delete_table = "delete from "+table_name

cur.execute(delete_table)

#须要在数据库中创建表yelp_academic_dataset_checkin,及字段和字段属性类型。

#写sql语句创建也行。不

insert_sql = "insert into yelp_academic_dataset_checkin (type,business_id,checkin_info) values (%s,%s,%s)"

#=====从json得到value的一些步骤,略。============

values_tuple = (str(temp_values[0]),str(temp_values[1]),str(temp_values[2]))

cur.execute(insert_sql,values_tuple)

#运行完了,须要关掉

conn.commit()

conn.close()

四、写入日期型数据

需求变。代码也跟着变。唉。让一个程序猿崩溃,改三次需求即可。

有个字段在数据库里是date类型,而不是varchar(),python字符串到mysql数据库里面须要是date类型的,有两种方法可破,第一,python字符串转为date类型,然后写到数据库里。其二。python字符串写到里面,再在调用函数转为date类型,写到数据库里。卤主用了另外一种方法,用时过多差点吐血。mysql有函数str_to_date(),可帮助将字符串类型的数据转为date类型数据。但注意參数变化。

date_string = "2015-07"

name = "shifeng"

values_tuple = (name, date_string)

insert_sql = "insert into table_name (name_field, date_field) values(%s,str_to_date(%s, "%%Y-%%m"))"

cur.execute(insert_sql, values_tuple)存sql见第三步,这里主要说明的是str_to_date函数。第一个參数为字符串,二个參数个日期的格式,注意格式。注意格式,注意格式(重要的事情要说三遍)。字符串是四位数的年龄加杠符号加两位数的月份。那么str_to_date函数第二个參数须要是百分号加Y加杠符号加百分号加m的字符串,假设字符串里的杠是逗号。那么第二个參数里面也相应的是逗号,另外,这里有两个百分号。是由于python须要转义,若是直接在mysql里面操作的时候直接:

insert into table_name(name_field, date_field) values("shifeng", str_to_date("2015-07","%Y-%m"))就可以。

五、终端操纵mysql

首先下载mysql

sudo apt-get install mysql-client

其次。连上数据库

mysql -h XX.XX.XX.XX -u user_name password database_name

接下来可做一些操作如同在数据中命令的操作:

show tables;

select * from table_name;

insert into table_name(name_field, date_field) values("shifeng", str_to_date("2015-07","%Y-%m"))

delete from table_name;

另外似乎能够json--->dataframe--->sql,用pandas.io.json相关的。卤主没有试过,以后有机会能够一试。

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

mysql讀取sql_MySQL数据库之python json及mysql读取json文件存sql等问题相关推荐

  1. pandas读取csv写入mysql_使用python的pandas库读取csv文件保存至mysql数据库

    第一:pandas.read_csv读取本地csv文件为数据框形式 data=pd.read_csv('G:\data_operation\python_book\chapter5\\sales.cs ...

  2. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

  3. Python用pydicom库读取dicom文件

    Python用pydicom库读取dicom文件并调用 方法1:通过group.element读取 方法2:通过tag读取 方法3:get()方法 通用 import pydicompath = 'x ...

  4. [js] localStorage 如何存储JSON数据并读取JSON数据

    localStorage是HTML5提供的再客户端实现本地存储的一种方法,但是localStorage方法只能存储字符串数据,有时候我们需要存储对象到本地比如:JSON:那么,localStorage ...

  5. python存储和读取数据时出现错误_python读取json文件存sql及codecs读取大文件问题...

    preface: 最近帮师兄处理json文件,需要读到数据库里面,以备其后续从数据库读取数据.数据是关于yelp网站里面的: https://github.com/Yelp/dataset-examp ...

  6. mysql 本地备份_MYSQL数据库自动本地/异地双备份/MYSQL增量备份

    构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图 继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构.针对安全性有多种多样的解决方案,其中数据备份是 ...

  7. python json解析_python读取json文件并解析

    原博文 2018-07-09 18:35 − # -*- coding: utf-8 -*- import os import json import sys reload(sys) sys.setd ...

  8. mysql 导入超时_sql数据库有1000M怎么导入mysql?导入超时怎么办?

    mysql数据库有1000M怎么导入?导入超时怎么办? source命令超大文件导入方法 1.输入 cmd  进入dos 输入登录命令:mysql -u root -p  默认root密码为空 无需输 ...

  9. centos mysql 服务器_服务器数据库搭建流程(CentOs+mysql)

    前言: 服务器上数据库搭建需要知道Linux系统的版本,以前的Ubuntu14.04直接在终端下输入apt-get install (package)便可方便的下载并安装mysql,但是在centOs ...

最新文章

  1. forms身份验证 不跳转_“东湖24小时”玩不够?收好这份指南,365天不重样
  2. Excel实战技巧之[活用条件格式]
  3. 实现不是三角形尾巴的气泡框
  4. CAN'T TAKE MY EYES OF YOU
  5. am5718_基于TI AM5718 车牌识别系统解决方案 - 飞凌嵌入式行业资讯 - 保定飞凌嵌入式技术有限公司...
  6. jquery插件编写
  7. hiho模拟面试题2 补提交卡 (贪心,枚举)
  8. Typescript学习笔记(五) 模块机制
  9. jmeter判断值是否相等_jmeter beanshell判断响应的json值是否正确;
  10. KM、流程、风险管理的关系分析
  11. 用reloadRowsAtIndexPaths刷新单个cell 跳动问题
  12. 大龄女程序员年薪45万,杭州两套房,相亲失败后在客厅痛哭!
  13. 反病毒工具-C32ASM
  14. Postman之Pre-request Script 使用详解
  15. TCP/UDP/IP/Socket的定义
  16. PS抠章、去水印-你懂得
  17. HASH SEMI JOIN (semi join) 比 hash join 快!
  18. word删除空白页面
  19. matlab /simulink车辆防抱死制动系统ABS建模仿真
  20. 测序技术回顾与第三代测序技术展望

热门文章

  1. openstack社区_OpenStack社区中发生了什么?
  2. 安全和隐私:您知道系统中潜藏着什么吗?
  3. blender下载_下载此Blender Hotkey备忘单
  4. 第三方开源项目名称_如何为您的开源项目选择品牌名称
  5. 入侵linux_入侵Linux计算机以获得更好的聆听体验
  6. node事件循环 EventEmitter 异步I/O Buffer缓冲区 模块
  7. Bootstrap3 滚动监听插件的方法
  8. Bootstrap下拉菜单中禁用某个下拉菜单
  9. Bootstrap网页模板
  10. Array.from()方法