五种使用python储存数据的方式
程序员文章站
2023-03-01 19:58:23
在python编程开发中,总是不可避免的遇到数据储存的问题,下面就介绍python与几种数据储存方式交互的方法。
json文件
json是一种轻量级的数据交换格式。采用完全独立...
在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使用Selenium爬取淘宝异步加载的数据方法
-
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
-
python数据持久存储 pickle模块的基本使用方法解析
-
对sklearn的使用之数据集的拆分与训练详解(python3.6)
-
python使用adbapi实现MySQL数据库的异步存储
-
微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。
-
python数据库-MongoDB的基本使用(54)
-
Python基于scrapy采集数据时使用代理服务器的方法
-
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
-
使用Python抓取豆瓣影评数据的方法