python存储和读取数据时出现错误_python读取json文件存sql及codecs读取大文件问题...
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 = '', 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()
另外似乎可以json--->dataframe--->sql,用pandas.io.json相关的。卤主没有试过,以后有机会可以一试。
参考:
1.https://github.com/Yelp/dataset-examples
2.http://www.yelp.com/dataset_challenge/
3.http://stackoverflow.com/questions/21058935/python-json-loads-shows-valueerror-extra-data
版权声明:本文为博主原创文章,未经博主允许不得转载。
python存储和读取数据时出现错误_python读取json文件存sql及codecs读取大文件问题...相关推荐
- python从文件中读取数据时出现错误_Python 从文件中读取数据
读取整个文件 # 案例:读取整个文件 # pi_digits.txt 3.1415926535 8979323846 2643383279 # file_reader.py with open ('p ...
- python逐行读取数据时出现错误_python如何逐行读取数据
在实际开发的过程中,文件读写也很重要,下面说一下python如何逐行读取文件. 如果程序要读取行,通常只能用文本方式来读取,道理很简单,只有文本文件才有行的概念,二进制文件没有所谓行的概念. 文件对象 ...
- python逐行读取数据时出现错误_Python利用逐行读取readline()打印出现空行的解决办法...
Python Python开发 Python语言 Python利用逐行读取readline()打印出现空行的解决办法 在利用readline()进行逐行读取文件的时候,我们一般使用以下程序: f=op ...
- python如何读取数据时出现错误_python读取excel数据报xlrd.biffh.XLRDError错误原因,,比如说我要读取 http...
python读取excel数据报xlrd.biffh.XLRDError错误原因,,比如说我要读取 http 比如说我要读取 http://basic.10jqka.com.cn/600383/xls ...
- python函数式编程读取数据时出现错误_Python编程中,函数遇到问题是抛出错误好还是约定返回值好?...
这其实是一个编码规范的问题,没有任何场景都适用的解决方案,就好比有了 list,但是还是需要 tuple,所以对于抛出异常好,还是返回值好,是需要具体情况看的. 在 C 语言中,通用的做法是函数返回一 ...
- python如何读取数据时出现错误_在python3中,关于redis读取数据带有‘b’的问题...
在python3中,关于redis读取数据带有'b'的问题 #encoding=utf-8 from redis import * #读取数据 d1=input("您输入的数据是:" ...
- python函数式编程读取数据时出现错误_写 Python 代码不可不知的函数式编程技术...
原标题:写 Python 代码不可不知的函数式编程技术 选自 Medium 作者:Raivat Shah 参与:魔王.Jamin 本文对 Python 中的函数式编程技术进行了简单的入门介绍. 近来, ...
- python如何读取数据时出现错误_连接数据库时出现的错误,怎样解决??
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Traceback (most recent call last): File "src\pymssql.pyx", line 636 ...
- python从文件中读取数据时出现错误_python-从文件中读取数据
一.读取整个文件 learnFile.py 绝对路径 #coding=UTF-8 importsys reload(sys) with open(r'C:\Users\zhujiachun\Deskt ...
最新文章
- 天平游码读数例题_量筒、天平经典习题
- NGINX由入门到精通:Nginx介绍
- 分布式系统的架构思路
- .jQuery文档分析4-文档处理
- 程序员藏经阁 Linux兵书
- Visual Studio Code 保存代码时报Applying code action Organize Imports
- 何恺明一作,刷新7项检测分割任务,无监督预训练完胜有监督
- java 数组覆盖_JavaSE——数组集合
- 【java笔记】IO流(1):IO流概述,字节输出/输入流读写文件
- saltstack学习-1:saltstack介绍、部署、常见问题处理
- luaprofiler探索
- java 相等测试与继承
- html中如何设置表格分页,html中table表格分页(修订了的)
- 什么是RFID? 射频识别技术的特点及工作原理!
- 胶囊网络用于推荐系统问题(MIND,CARP)
- linux蓝牙适配器驱动安装失败,deepin官方论坛-深度科技官网旗下网站
- 用cocos creator实现像素风格的微信跳一跳小游戏。
- 什么是模块化,为什么要模块化?
- linux541权限代表什么,linux中用户对文件的权限
- 3D游戏开发所需的数学基础——点和矢量
热门文章
- eap aka_使用API​​密钥(aka身份验证令牌)部署到Maven Central
- Java 13:文本块
- activemq 内存_ActiveMQ中的温度,存储和内存使用百分比
- 休眠面试问答-最终清单
- 生产替代物料_一种替代的多生产者方法
- 2018年机器学习趋势与Apache Kafka生态系统相结合
- 适用于Idea的面向现代TDD的Java 8 JUnit测试模板(带有Mockito和AssertJ)
- ANTLR和网络:一个简单的例子
- 用Hamcrest验证DateTime和日期
- maven 父maven_Maven不会吮吸。 。 。 但是Maven文件会