大家好,小编为大家解答跟着老齐学python从入门到精通的问题。很多人还不知道跟着老齐学编程,现在让我们一起来看看吧!
Source code download: 本文相关源码
第七章 保存数据
7.1 pickle
用pickle.dump(integers, f)将数据integers保存到文件22901.dat中。
pickle.dump(obj,file[,protocol]):
obj:序列化对象,它是基本类型,也可以是序列化自己定义的类型python爱心代码复制粘贴。
file:要写入的文件,可以广泛地理解为write()方法的对象,并且能接受字符串为参数。
protocol:可选项,默认为False,默认情况下是以ASCII码形式进行保存,如果为TRUE,则为二进制的形式进行保存。
分别以二进制的形式和ASCII码的形式保存对象,其大小是不一样的,二进制的的形式比较小一些,而且大约是ASCII码的43%
存入文件被称之为序列化,将文件读取出来被称之为反序列化。
7.2 shelve
略
7.3 MySQL数据库
数据库是指以一定方式储存在一起,能为多个用户共享,具有尽可能小的冗余度,与应用程序彼此独立的数据集合。
7.3.1 MySQL概况
7.3.2 安装
(我用的是阿里云服务器,与书上说明不太一致)
首先更新一下:
然后安装mysql数据库:
安装完之后重启一下:
输入指令查看是否安装成功:
重新设置密码(注意句末的分号):
7.3.3 运行
查看数据库:
7.3.4 安装python-MySQLdb
在编程中会遇到很多类似的接口程序,通过接口程序对另外一个对象进行操作。python-MySQLdb就是打开MySQL数据库的钥匙。引入这个模块,就可以在python中操作MySQL。
首先安装:pip install mysql - python
然后import MySQLdb,如果没有报错,则安装成功。
7.3.5 连接数据库
创建数据库:
在python中创建MySQLdb对象用来连接数据库:
host:填写的是数据库的地址,因为数据库在本机上,所以写的是localhost,如果不是本机,则要写其他服务器的IP。注意要带引号。
user:登陆用户名,注意要带引号。
passwd:登陆密码,注意要带引号。
db:要连接的数据库名称,注意要带引号。
port:MySQL端口号,一般默认为3306。注意不带引号,该函数中唯一一个整除参数,其他都是字符串。
charset:设置格式,utf8,注意要带引号。
至此已经完成了数据库的连接
7.3.6 数据库表
查看数据库中的表:
在数据库中创建一个表:
插入信息:
7.3.7 操作数据库
创建一个MySQLdb。connect()对象来连接数据库(记得先import MySQLdb):
commit():用于在python中操作数据库之后提交更改的数据,有了这一步才能在MySQL数据库中更新。
rollback():如果有权限,取消当前操作。
close():关闭连接,关闭游标。
cursor():返回游标对象。
python中操作MySQL,就要先建立连接,然后再创建游标对象:
1、插入:
execute(query[,args])是执行MySQL语句的函数,其中query是MySQL语句,args是MySQL语句参数。
执行成功之后返回1L,说明一条语句已经插入,但是此时在MySQL中查看发现该语句并没有执行,是因为还少了一个提交数据:
一下插入多行命令:
注意,特别注意括号——一环套一环的括号,这个元组里面的元素也是元组,每个元组分别对应sql语句中的字段列表
2、查询
显示11L.说明查询到11条数据。然后我们可以用游标对象的fetchall()、fetchone()、fetchmany(size = None)来打印出查询结果:
cur.execute()从数据库查询出来的东西,被“保存在了cur所能找到的某个地方”,要找出这些被保存的东西,需要用cur.fetchall()(或者fechone等),并且找出来之后,作为对象存在。而且是一个元组对象,里面的元素也是一个一个的元组。
游标读取的时候,在第一次操作cur.fetchall()时就会从第一条数据移动到最后一条数据。
上面是将游标向上移动到两条数据之前。括号里的数为正,则表示向下移动,反之为向上移动。且均是相对于当前的游标位置进行移动。
这样就是将游标进行绝对移动,注意python中排序的第一位是0,所以括号内是2,其实是指向第三条
在连接对象的游标方法中提供了一个参数,可以实现将读取到的数据变成字典形式:
这样,就可以按照字典进行操作:
7.3.8 更新数据
每次更新都需要commit()这个函数进行保存。
且记住,在操作完毕数据一定要有(以本文对象为例):cur.close()和conn.close()