前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python基础学习_06_数据存储

Python基础学习_06_数据存储

作者头像
码农帮派
发布2020-04-01 14:59:05
1.1K0
发布2020-04-01 14:59:05
举报
文章被收录于专栏:码农帮派码农帮派

Python中常用的数据存储的方式有:pickle模块,shelve模块,MySQL数据库,MongoDB数据库,SQLite轻量数据库,Excel表格存储等等。

(1)使用pickle模块进行数据存储

pickle是标准库中的模块,与之相同的是cpickle模块,cpickle是由c语言重写之后的,与pickle完全一致的模块,比pickle快。

(1-1)pickle的数据写入

pickle使用dump(obj, file, [protocol])函数将数据写入到文件中:

  • obj : 待写入的数据对象;
  • file : 要写入数据的文件;
  • protocol : 写入协议,默认为False或0,表示将会以ASCII格式保存对象数据,protocol=True时,表示以压缩的二进制格式保存对象数据。

执行代码之后,后生成一个pickle_tmp.dat的文件,并将数据写入到该文件中:

(1-2)pickle的数据读取

pickle模块使用load(file)函数反序列化读取文件数据。

打印结果:

(2)使用shelve模块进行数据读写

shelve也是标准库。

(2-1)shelve的数据写入

执行代码之后,可以在文件系统中看到新创建的文件shelve_tmp.db文件:

(2-2)shelve的数据读取

打印结果:

【注意】shelve模块中, 通过 s['name'] = 'hust' 这一过程,若已存在"name"键时,则上面的操作是修改原有键对应的值,若没有"name"的键,则会增加新的键值对;但要是shevle中需要存储一个键值对,值是一个列表,现在需要更新列表的内容:

打印结果:

我们发现结果并不是我们设想的那样,错误出现在shelve.open()函数上,此处需要多传入一些参数:

打印结果:

(3)MySQL数据库存储数据

在Ubuntu上,MySQL的安装为:

第一步:

代码语言:javascript
复制
sudo apt-get install mysql-server

第二步:

代码语言:javascript
复制
apt-get isntall mysql-client

第三步:

代码语言:javascript
复制
sudo apt-get install libmysqlclient-dev

Python中提供了MySQLdb模块,可以让Python与MySQL数据库进行交互,MySQLdb不是Python的标准库,需要额外安装:

方法一:

代码语言:javascript
复制
1. sudo apt-get install build-essential python-dev libmysqlclient-dev
2. sudo apt-get install python-MySQLdb

方法二:

代码语言:javascript
复制
pip install mysql-python

使用MySQLdb模块可以链接MySQL数据库,并与之进行交互:

通过MySQL.connect()函数获取得到MySQL数据库的链接对象,从该对象可以获得游标cursor对象,与MySQL数据库的对话,就是通过游标cursor来完成的。

数据库链接对象的常用方法:

数据库游标cursor常用方法:

(3-1)查询数据

打印结果:

【说明】游标的方法fetchone()方法每次得到当前游标所在位置上的结果集,同时会将游标移动到下一个结果集上,若要手动移动游标,则可以使用游标的nextset()方法,以及scroll()方法。

(3-2)插入数据

打印结果:

(3-3)更新数据

打印结果:

【注意】在数据库操作之后,为了节省内存,需要关闭游标对象和数据库链接对象。

(4)Mongo数据库存储数据

Mongo数据库是NoSQL数据库,Python中提供了pymongo模块来实现与Mongo数据库的交互,首先需要安装pymongo:

# 安装最新版本的pymongo模块

代码语言:javascript
复制
sudo pip install pymongo

# 安装指定版本的pymongo(version2.8)

代码语言:javascript
复制
sudo pip install pymongo==2.8

安装之后,可以使用pymongo.version来查看pymongo模块的版本:

安装之后,使用dir(pymongo)来查看pymongo中的方法和属性:

在Ubuntu上安装MongoDB:

与MongoDB进行链接:

打印结果:

【说明】上面的mydb是自己在MongoDB中建立的数据库,user是mydb数据库中的一个文档集合,数据是存储在user文档集合中的。

(4-1)查询数据

打印结果:

可以将find()获得的结果集进行排序:

打印结果:

数据集合中的find_one()函数可以查找到一条数据:

打印结果:

(4-2)增加数据

在数据集合中插入数据,调用数据集合对象的insert()进行数据的增加。

打印结果:

(4-3)更新数据

Python可以调用数据集合的update()函数进行数据的更新。

打印结果:

(4-4)删除数据

Python中调用数据集合的remove()函数删除数据:

打印结果:

(5)Microsoft Excel表格存储数据

Python中提供opnepyxl模块进行Microsoft Excel表格数据的读写,在Ubuntu系统中需要首先安装openpyxl模块:

操作Excel文件对象:

每个Excel文件的操作涉及到sheet和cell两个对象。

(5-1)sheet的创建

Python可以使用openpyxl模块中的create_sheet()方法进行sheet的创建:

(5-2)sheet对象常用的操作

打印结果:

(5-3)操作cell

在Sheet中的cell中可以存储具体的数据。

打印结果:

(5-4)其他相关操作

(5-4-1)获取cell切片集合

打印结果:(以元组的方式返回)

(5-4-2)按照行/列的方式查看sheet表格

(5-4-3)在Sheet表格中添加数据

打印结果:

(5-5)保存Excel文件

【说明】上面的操作,是将新创建的Excel表格存储在内存中操作,在结束操作之后,需要保存一下Excel表格,以便数据的持久化存储。

在命令行中,使用ls查看文件系统:

打开Excel文件,查看内容:

(5-6)读取已存在的Excel文件

打印结果:

【补充】Excel表格的处理,处理openpyxl模块之外,还可以使用xlsxwriter模块,xlrd模块,xlwt模块进行处理。

(6)SQLite数据库

SQLite是一种小型的关系型数据库,不需要服务器,零配置就可以进行数据的存储,Python标准库中的sqlite3可以用来操作SQLite数据库。

上面使用Python标准库sqlite3进行SQLite数据库的链接,执行之后可以看到在当前文件夹中生成了123.db的数据库文件,当然也可以指定文件存在/创建的路径。

(6-1)表的创建

执行之后,查看123.db数据库文件:

【说明】在Ubuntu系统下可以使用:

代码语言:javascript
复制
sudo apt-get install sqlitebrowser

命令来安装sqlitebrowser用于查看SQLite数据库文件,安装好之后,在123.db所在的目录中使用:

代码语言:javascript
复制
sqlitebrowser 123.db 

命令,既可以看到上面的情况。

(6-2)数据存储

执行完上面的语句之后:

(6-3)数据查询

打印结果:

【说明】游标对象的fetchall()以列表返回所有的结果集,游标对象的fetchone()方法只返回第一个匹配到的结果集。

(6-4)批量导入数据

打印结果:

利用sqlitebrowser工具查看SQLite数据库文件123.db:

(6-5)数据更新

打印结果:

使用sqlitebrowser工具查看123.db文件:

(6-6)删除数据

打印结果:

删除成功,需要注意的是,在执行完操作之后,需要尽量关闭游标对象,数据库链接对象:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农帮派 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档