python储存数据的方式
python储存数据的方式
2017年10月13日 23:38:10 Nick_Spider 阅读数:59286 标签: redis 数据库 爬虫 存储 结构 更多
个人分类: 数据库 爬虫 python
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_39198406/article/details/78231430
在python编程开发中,总是不可避免的遇到数据储存的问题,下面就介绍python与几种数据储存方式交互的方法。
json文件
json是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和表示数据。层次结构简洁而清晰,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
最主要的是,通过json这个包可以很方便的解决无论是py2还是py3中的编码问题,json的内容结构也近似于python中的字典和列表,操作起来特别方便。
import json
# 此时有一个json文件,结构大概是 [{},{},{}...] 打开这个文件
# 使用json load读取文件内容,然后可以直接用列表或者字典的方式去操作con这个变量
con = json.loads(content)
# 那么如何储存为json文件呢?
# 使用dumps将列表序列化并且转换为unicode编码,储存的时候,就可以存你最喜欢的utf-8了
lis = [{},{},{}...]
data = json.dumps(lis, ensure_ascii=False)
f.write(data.encode('utf-8'))
csv文件
转换为csv文件后,我们就可以直接用excel打开拉图表了
import csv
# 打开文件
with open(filename, 'w') as f:
writer = csv.writer(f) # 构造写入器
data = ('1','2','3') # 填写三格
data = ('','','3') # 填写一格,前两格空起来
data = ('1','') # 填写第一格,后面无论多少格都空起来
writer.writerow(data) # writerow每执行一次,写入一行 注意其中的参数data需要是一个元组
# 注意,在windows中,打开文件需要使用
with open(filename, 'w', newline='') as f:
# 否则每写一行都会多一个空行
# 原因是 windows中换行符号是 \n\r ,csv库中并没有做特别的处理,所以会产生空行
MySQL数据库
应该是最常用的操作了,使用mysql的优点是看数据真的很直观(如果使用GUI程序的话)
导入包略微不一样
@python3
import pymysql
@python2
import MySQLdb
# 建立连接 注意数据库写入数据时数据的编码
conn = MySQLdb.connect(host='localhost', port=3306, db='test',
user='root', passwd='', charset='utf8')
# 新建游标 游标操作sql语句
cur = conn.cursor()
result = cur.execute("insert into students(name) values('Jack')")
result = cur.execute("insert into students(name,age) values(%s,%s)", params)
# sql对数据库数据有改变的时候,使用commit()提交,否则不生效
conn.commit()
# 返回数据到python,使用fetchone和fetchall从内存中取数据,取了一个清空一个
cur.execute('select * from students where id between 1 and 5')
result=cur.fetchone()
result=cur.fetchall()
# 最后记得关闭连接
cur.close()
conn.close()
Redis数据库
优点是方便,速度快,需要注意的是取出的数据是二进制数据,一般需要转为字符串再操作。
操作大全: python-redis操作大全
import redis
# 建立连接
client = redis.Redis(host='lcoalhost', port=6379)
# 操作数据
client.set('nums', [1,2,3,4,5])
result = client.get('name')
# 使用事务(避免失败操作导致数据只操作了一半)
pipe = client.pipeline()
pipe.set('name', 'Jack')
pipe.execute()
Mongdb数据库
优点是不在乎数据结构,需要注意的是取出来的时候要写个脚本整理一下。
import pymongo
# 建立连接 指定数据表
client = pymongo.MongoClient('localhost', 27017)
test1_db = client.test1
sheet_stu = db.stu
# 操作数据
info = {name:'Jack',age:18}
info_id = stu.insert_one(info).inserted_id
cur_list = [cur for cur in stu.find()]
count = stu.count()
python储存数据的方式的更多相关文章
- Python存储数据的方式
在Python开发中,数据存储.读取是必不可少的环节,而且可以采用的存储方式也很多,常用的方法有json文件.csv文件.MySQL数据库.Redis数据库以及Mongdb数据库等. 1. json文 ...
- Python多线程爬虫与多种数据存储方式实现(Python爬虫实战2)
1. 多进程爬虫 对于数据量较大的爬虫,对数据的处理要求较高时,可以采用python多进程或多线程的机制完成,多进程是指分配多个CPU处理程序,同一时刻只有一个CPU在工作,多线程是指进程内部有多个类 ...
- 05.Python网络爬虫之三种数据解析方式
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
- Python爬虫之三种数据解析方式
一.引入 二.回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需 ...
- 05,Python网络爬虫之三种数据解析方式
回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据 ...
- 《Python网络爬虫之三种数据解析方式》
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
- Python网络爬虫之三种数据解析方式 (xpath, 正则, bs4)
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
- Python爬虫的三种数据解析方式
数据解析方式 - 正则 - xpath - bs4 数据解析的原理: 标签的定位 提取标签中存储的文本数据或者标签属性中存储的数据 正则 # 正则表达式 单字符: . : 除换行以外所有字符 [] : ...
- (数据科学学习手札06)Python在数据框操作上的总结(初级篇)
数据框(Dataframe)作为一种十分标准的数据结构,是数据分析中最常用的数据结构,在Python和R中各有对数据框的不同定义和操作. Python 本文涉及Python数据框,为了更好的视觉效果, ...
随机推荐
- 20165309 技能学习经验与C语言
技能学习经验与C语言 技能学习经验 你有什么技能比大多人(超过90%以上)更好?针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处? 从小到大,或是出于兴趣.或是出于父母的要求 ...
- C# string 字符串详解 恒定 驻留
string是一种很特殊的数据类型,它既是基元类型又是引用类型,在编译以及运行时,.Net都对它做了一些优化工作,正式这些优化工作有时会迷惑编程人员,使string看起来难以琢磨.这篇文章共四节,来讲 ...
- CentOS7 搭建LVS+keepalived负载均衡
1.实验环境 4台节点 Keepalived1 + lvs1(Director1):192.168.31.4 Keepalived2 + lvs2(Director2):192.168.31.3 Re ...
- 【MySQL】【1】表中存在重复记录,删除保留其中一条
--删除题库(TABLE_Q )中,标题(TITLE )和类型(TYPE )都相同的数据,仅保留ID最小的一条 DELETE TABLE_Q FROM TABLE_Q, ( ) T2 WHERE TA ...
- 【基础知识】【1】CDN
正文: CDN:Content Delivery Network,内容分发网络.使用户访问离ta最近的资源服务器,优化访问速度 优点: 1,内容可以共享,不同站点的同一文件可以不用多次缓存 2,增加下 ...
- Thymeleaf使用bootstrap及其bootstrap相关插件(二)
接上文http://www.cnblogs.com/conswin/p/7929772.html 接下来bootstrap-datepicker的简单使用. 1.引入添加js 和 css 2.然后是h ...
- token原理详解
概念与使用流程 是计算机术语:令牌,令牌是一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧.token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同 ...
- 二十二、Spring MVC与Structs2的区别总结
一.框架的入口 1.Structs2采用Filter(StructsPrepartAndExecuteFilter)来进行实现. 2.SpringMVC采用Servlet(DispatcherServ ...
- C++ Leetcode Median of Two Sorted Arrays
坚持每天刷一道题的小可爱还没有疯,依旧很可爱! 题目:There are two sorted arrays nums1 and nums2 of size m and n respectively. ...
- MySQL设置白名单教程
1 登录mysql mysql -h host -u username -p password 2 切换至mysql库 use mysql; 3 查看当前允许登录IP及用户 select Host,U ...