Python基础学习_06_数据存储

2020-04-01 14:59:05 浏览数 (1)

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)删除数据

打印结果:

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

0 人点赞