跟老齐学python_跟老齐学python(7)

131c0b763246b47190b6e61f6c258b2c.png

第七章 保存数据

7.1 pickle

16f74805f833f25df5c9771bf6844c4d.png

用pickle.dump(integers, f)将数据integers保存到文件22901.dat中。

pickle.dump(obj,file[,protocol]):
obj:序列化对象,它是基本类型,也可以是序列化自己定义的类型。
file:要写入的文件,可以广泛地理解为write()方法的对象,并且能接受字符串为参数。
protocol:可选项,默认为False,默认情况下是以ASCII码形式进行保存,如果为TRUE,则为二进制的形式进行保存。

6584be7fb64848ecfcde8349b5c2f5d7.png

分别以二进制的形式和ASCII码的形式保存对象,其大小是不一样的,二进制的的形式比较小一些,而且大约是ASCII码的43%

f6ca17a62b3e63dd96479f86477cb141.png

存入文件被称之为序列化,将文件读取出来被称之为反序列化。

7.2 shelve

7.3 MySQL数据库

数据库是指以一定方式储存在一起,能为多个用户共享,具有尽可能小的冗余度,与应用程序彼此独立的数据集合。

7.3.1 MySQL概况

7.3.2 安装

(我用的是阿里云服务器,与书上说明不太一致)

首先更新一下:

dec2485c9b57884f140c8b5ab2a602e8.png

然后安装mysql数据库:

8de4034c651e74ca157afe80e41af371.png

安装完之后重启一下:

868c895f18da1dffecdf9ad01a5915c6.png

输入指令查看是否安装成功:

eff01da1661fe7305378da39aaedcf28.png

重新设置密码(注意句末的分号):

b98706e0410bea165623a576c5fd6d83.png

7.3.3 运行

ae2d926382a85a1bb278aaa9098e80b4.png

查看数据库:

b26eecc2a0faa3e67a15fb0fe253bc6e.png

7.3.4 安装python-MySQLdb

在编程中会遇到很多类似的接口程序,通过接口程序对另外一个对象进行操作。python-MySQLdb就是打开MySQL数据库的钥匙。引入这个模块,就可以在python中操作MySQL。

首先安装:pip install mysql - python
然后import MySQLdb,如果没有报错,则安装成功。

7.3.5 连接数据库

创建数据库:

d01b038230645490fa7f9e0e2d630cdf.png

在python中创建MySQLdb对象用来连接数据库:

a119df1b7feabac90820045295461d29.png

host:填写的是数据库的地址,因为数据库在本机上,所以写的是localhost,如果不是本机,则要写其他服务器的IP。注意要带引号。
user:登陆用户名,注意要带引号。
passwd:登陆密码,注意要带引号。
db:要连接的数据库名称,注意要带引号。
port:MySQL端口号,一般默认为3306。注意不带引号,该函数中唯一一个整除参数,其他都是字符串。
charset:设置格式,utf8,注意要带引号。

至此已经完成了数据库的连接

7.3.6 数据库表

查看数据库中的表:

80304e2de1ee072a8e892418c53b10d0.png

在数据库中创建一个表:

708fd31717ac184aa03fbd439f2581f9.png

插入信息:

dc411633f20efb872dfbc32116f63bd6.png

7.3.7 操作数据库

创建一个MySQLdb。connect()对象来连接数据库(记得先import MySQLdb):

217a2b599e211bde3acdc355853bca0f.png

commit():用于在python中操作数据库之后提交更改的数据,有了这一步才能在MySQL数据库中更新。

rollback():如果有权限,取消当前操作。

close():关闭连接,关闭游标。

cursor():返回游标对象。

python中操作MySQL,就要先建立连接,然后再创建游标对象:

fc44e0955734733ee610571016a65c77.png

1、插入:

3352fccd04db9e8c869834d9522fac40.png

execute(query[,args])是执行MySQL语句的函数,其中query是MySQL语句,args是MySQL语句参数。
执行成功之后返回1L,说明一条语句已经插入,但是此时在MySQL中查看发现该语句并没有执行,是因为还少了一个提交数据:

fc66cf0ea5aafba10a6f7405e34ef791.png

一下插入多行命令:

ad9cb30c1de2ed69eed197477fc63bc6.png

注意,特别注意括号——一环套一环的括号,这个元组里面的元素也是元组,每个元组分别对应sql语句中的字段列表

2、查询

b7465cba8732f93386623b0d1fcd9a9b.png

显示11L.说明查询到11条数据。然后我们可以用游标对象的fetchall()、fetchone()、fetchmany(size = None)来打印出查询结果:

7943cc6efff7bfa83d9273cd6803451b.png

cur.execute()从数据库查询出来的东西,被“保存在了cur所能找到的某个地方”,要找出这些被保存的东西,需要用cur.fetchall()(或者fechone等),并且找出来之后,作为对象存在。而且是一个元组对象,里面的元素也是一个一个的元组。

游标读取的时候,在第一次操作cur.fetchall()时就会从第一条数据移动到最后一条数据。

ff2e73318f1766118349ae0bd010c299.png

上面是将游标向上移动到两条数据之前。括号里的数为正,则表示向下移动,反之为向上移动。且均是相对于当前的游标位置进行移动。

8ed6b15fb2d9011067a1b45579d22e62.png

这样就是将游标进行绝对移动,注意python中排序的第一位是0,所以括号内是2,其实是指向第三条

在连接对象的游标方法中提供了一个参数,可以实现将读取到的数据变成字典形式:

738d53b3cfdb5959ca3f76b69cd58406.png

这样,就可以按照字典进行操作:

03f8ba4094c11c050718557af88b748c.png

7.3.8 更新数据

每次更新都需要commit()这个函数进行保存。

且记住,在操作完毕数据一定要有(以本文对象为例):cur.close()和conn.close()

580763fa947a78d93cff1ba5f76dbc03.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值