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储存数据的方式的更多相关文章

  1. Python存储数据的方式

    在Python开发中,数据存储.读取是必不可少的环节,而且可以采用的存储方式也很多,常用的方法有json文件.csv文件.MySQL数据库.Redis数据库以及Mongdb数据库等. 1. json文 ...

  2. Python多线程爬虫与多种数据存储方式实现(Python爬虫实战2)

    1. 多进程爬虫 对于数据量较大的爬虫,对数据的处理要求较高时,可以采用python多进程或多线程的机制完成,多进程是指分配多个CPU处理程序,同一时刻只有一个CPU在工作,多线程是指进程内部有多个类 ...

  3. 05.Python网络爬虫之三种数据解析方式

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  4. Python爬虫之三种数据解析方式

    一.引入 二.回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需 ...

  5. 05,Python网络爬虫之三种数据解析方式

    回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据 ...

  6. 《Python网络爬虫之三种数据解析方式》

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  7. Python网络爬虫之三种数据解析方式 (xpath, 正则, bs4)

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  8. Python爬虫的三种数据解析方式

    数据解析方式 - 正则 - xpath - bs4 数据解析的原理: 标签的定位 提取标签中存储的文本数据或者标签属性中存储的数据 正则 # 正则表达式 单字符: . : 除换行以外所有字符 [] : ...

  9. (数据科学学习手札06)Python在数据框操作上的总结(初级篇)

    数据框(Dataframe)作为一种十分标准的数据结构,是数据分析中最常用的数据结构,在Python和R中各有对数据框的不同定义和操作. Python 本文涉及Python数据框,为了更好的视觉效果, ...

随机推荐

  1. php-fpm的错误日志

  2. 2018-2019 ACM-ICPC Brazil Subregional Programming Contest

    A:留坑 B:二维sg函数,特判边界情况 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) / ...

  3. spring boot(十八)集成FastDFS文件上传下载

    上篇文章介绍了如何使用Spring Boot上传文件,这篇文章我们介绍如何使用Spring Boot将文件上传到分布式文件系统FastDFS中. 这个项目会在上一个项目的基础上进行构建. 1.pom包 ...

  4. apache benchmark并发测试工具使用

    ab是apache自带的压力测试工具.ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试.比如nginx.tomcat.IIS等. 一.Apach ...

  5. token原理详解

    概念与使用流程 是计算机术语:令牌,令牌是一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧.token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同 ...

  6. Golang 在 Mac、Linux、Windows 下如何交叉编译(转)

    原文地址:Golang 在 Mac.Linux.Windows 下如何交叉编译 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下. Mac 下 ...

  7. 一、集合框架(HashMap和Hashtable的区别)

    一.HashMap和Hashtable 都实现了Map接口,都是以key-value形式保存数据. 区别一: HashMap可以存放null Hashtable不能存放null 区别二: HashMa ...

  8. Docker的简单介绍及使用

    Docker介绍 Docker是Docker.Inc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在GitHub上,基于Go语言并遵从Apache2.0协议开源. Doc ...

  9. 【转】JQuery插件定义

    一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写("#"),("."),写了几年就对别人说非常熟悉JQuery.我曾经也是这样的人,直 ...

  10. X-Window/GNOME/KDE的关系

    名称 开发者 开发年份 许可证 语言 说明 X-Window MIT 1984     X-Window是一个C/S架构的桌面框架,KDE和GNOME都是其基础上的具体实现 KDE Trolltech ...