Python数据库编程

Python数据库编程

此片文章笔者自己的原创,转载请与QQ:2530150649联系并标注出处,码字不易,谢谢,侵删。

数据库引言

通过前几节python基础知识、语法的学习以及反复的解决问题,我相信您可能已经能写一些小工具来处理日常事物,已经甚有成就感,但这还远远不够,您不应该只止于此。接下来我们将学习数据库(Database)。此篇文章我们主要讲如何利用python去管理数据库,您可能对于数据库这一名词了解甚少,但它现今已经遍布世界各地,无论是政府、银行还是其它公司或者民间组织均使用了它。我真的不敢想我们人类失去它后会怎么样,至少我认为那将会导致灾难性的后果。如果您还不清楚数据库是什么以及怎么操作它,请这一节一定要好好学,我相信您能通过这一小节的学习获益颇多。

数据库发展阶段

在此之前我决定我先带您来看看数据管理的发展历史,因为我认为任何事物的诞生都不是那么容易的,都会有一个经历和过程。我们的数据管理一共经历了人工管理、文件系统、数据库系统三个管理阶段。

       人工管理:

在计算机出现之前,人们运用常规的手段从事记录、存储和对数据加工,也就是利用纸张来记录和利用计算工具(算盘、计算尺)来进行计算,并主要使用人的大脑来管理和利用这些数据。

       文件系统:

20世纪50年代后期到60年代中期,随着计算机硬件和软件的发展,磁盘、磁鼓等直接存取设备开始普及,这一时期的数据处理系统是把计算机中的数据组织成相互独立的被命名的数据文件,并可按文件的名字来进行访问,对文件中的记录进行存取的数据管理技术。数据可以长期保存在计算机外存上,可以对数据进行反复处理,并支持文件的查询、修改、插入和删除等操作,这就是文件系统。文件系统数据管理示意如下图所示。文件系统实现了记录内的结构化,但从文件的整体来看却是无结构的。其数据面向特定的应用程序,因此数据共享性、独立性差,且冗余度大,管理和维护的代价也很大。

       数据库系统:

20世纪60年代后期以来 ,计算机性能得到进一步提高,更重要的是出现了大容量磁盘,存储容量大大增加且价格下降。在此基础上,才有可能克服文件系统管理数据时的不足,而满足和解决实际应用中多个用户、多个应用程序共享数据的要求,从而使数据能为尽可能多的应用程序服务,这就出现了数据库这样的数据管理技术。数据库的特点是数据不再只针对某一个特定的应用,而是面向全组织,具有整体的结构性,共享性高,冗余度减小,具有一定的程序与数据之间的独立性,并且对数据进行统一的控制。

数据库的类别

数据库经历了网状数据库、层次数据库和关系数据库三个时代。从20世纪80年代开始,数据库技术就进入了关系数据库时代,我们现在接触到的基本上都是关系型数据库,比如Microsoft SQL Server、MySQL、Oracle、DB2等也只是关系数据库中的一种。随着互联网Web 2.0网站的兴起,传统的关系数据库在应付Web 2.0网站,特别是在超大规模和高并发的SNS类型的Web 2.0纯动态网站中已经显得力不从心,暴露出很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。但是非关系型数据库并未形成一定标准,各种产品层出不穷,内部混乱,各种项目还需时间来检验。

这么多种数据库,您是不是看得头都大了。没关系,我告诉您事实上只要您掌握好一种数据库之后花很短的时间就可以掌握其他几种数据库。接下来我们来学习MySQL,我们去一窥究竟。

数据库的选择

在本教程中我们将使用MySQL数据库(MySQL 是一个关系型数据库管理系统,它由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。

为什么选择MYSQL?

MySQL 是开源的,所以你不需要支付额外的费用。

MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。

MySQL 使用标准的 SQL 数据语言形式。

MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。

MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。

MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。

MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。

关系数据库的特点

现在我们将使用MySQL关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

数据以表格的形式出现。

每行为各种记录名称。

每列为记录名称所对应的数据域。

许多的行和列组成一张表单。

若干的表单组成database。

RDBMS术语

       下面有一些术语,我想这需要您好好学一下。

数据库: 数据库是一些关联表的集合。

数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。

列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。

行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。

冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。

主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。

外键:外键用于关联两个表。

复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。

索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。

参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型:必须满足的完整性约束条件,目的是保证数据的一致性。

MySQL 为关系型数据库(Relational DatabaseManagement System), 这种所谓的"关系型",您可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:

表头(header):第一列的名称;

列(col): 具有相同数据类型的数据的集合;

行(row): 每一行用来描述某条记录的具体信息;

值(value): 行的具体信息, 每个值必须与该列的数据类型相同;

键(key): 键的值在当前列中具有唯一性。

安装MySQL

       了解完上面的理论知识,你知道了数据库的发展历程以及常用的数据库的特点了吗?

现在我们进入下一个环节安装数据库,就像我们刚开始学python然后安装它那样。这里步骤略微点多,但别担心,慢慢来。(Linux下MySQL的安装也相当简单)tooYoung , too Simple.

第一步下载:到https://dev.mysql.com/downloads/mysql/去下载。

第二步解压:下载完后我们将该压缩包解压到相应的目录去,我这里放到D盘去了。(注意自己存放的目录,后面的配置均以该路径为准)

 

第三步配置: 接下来我们在这个目录内创建一个名为my.ini的配置文件,我们输入以下内容,对MySQL进行基本配置:

    第四步启动和登录:接下来我们打开cmd,cd到我们的解压路径下的bin文件内,依次执行如下图示的命令登录到MySQL。(我这个自动生成的密码就是Ch+winhm>1UU)

MySQL基础知识

接下来可能又有点枯燥无味了,但是你只要一想到等下能又能学会一个新技能,我相信你会高兴的,别放弃。

    SQL命令分为四种类型:DDL,DML,DCL,TCL。下面分别介绍:

DDL(Data Definition Language,数据定义语言)包含指令:

create:创建数据库及其对象(包括新建表,索引,视图,存储过程等)

alter: 改变现有数据库的结构 (包括修改索引,修改字段类型,删除索引)

truncate: 删除表中所有记录,并删除已分配的空间

comment:添加注释

rename:重命名,其中包括索引、表名等。

              DML(Data Manipulation Language,数据操作语句)包含指令:

select:从数据库中检索数据

insert:新增数据到数据库中

update:更新表格中现有数据

delete:删除现有数据

explain:查看语句的执行计划

lock table:锁表操作

DCL(Data Control Language,数据控制语句)包含指令:

grant:允许用户访问数据库的权限

revoke:撤销用户访问数据库的权限

TCL(Transactional Control Language,事务控制语言)包含指令:

commit: 提交事务

rollback:回滚事务

set transaction:设置事务隔离级别。

       在本书中我们只讲常用的(数据定义语言)DDL和(数据操作语句)DML中的一部分指令用法。(工欲善其事,必先利其器)我没讲到的还请您多多Google搜索和请教。

我们再次回到mysql互交命令行,首先更改密码,我改成了PY#MYSQL++PASSWD。

创建,查询,删除数据库的命令:

创建、查询数据表的结构和内容的命令

    添加、更新和删除表中的记录的命令

       查询、删除表的命令

好了,通过以上几个示例,您应该学会了关于MySQL的基本操作了。如果还不会请大量的去练习这些命令并熟记命令相关的功能。(水滴石穿,您肯定能学会的)

接下来我们将会将本节的重点,用Python去操作数据库。那么如何使用python去操作数据库呢,我们这里使用PyMySQL模块去操作数据库。

【使用PyMySQL模块

    第一步安装PyMySQL模块:可以从下图看出我台电脑已经安装了。

       第二步导入PyMySQL模块:安装完成之后,我们就可以使用PyMySQL模块了。和往常一样我们使用import pymysql代码导入PyMySQL模块。

我们接下来配合我们之前学习的tkinter库,实现一个包含用户注册、登录和找回的OA认证系统。但首先我们得学会使用python程序去查询、插入和修改数据库中的数据,为什么这么说呢?因为增、删和改是数据库管理的基本操作。

PyMySQL模块查询数据库】。

       首先我们登录到数据库后在python库中使用create语句创建一张user表,并使用insert语句手动的向数据库插入了一条数据,如下图所示。

    接着我们使用程序去查询和检验数据,如下图的程序和console正确的显示数据,我们成功了。

       至此,已经使用程序完成了查询的工作。

PyMySQL模块插入数据库

       接下来我们将使用python程序在数据库的python库中的user表插入一条数据,再查询和检验数据是否正确。通过下图所示,从pycharm的编辑器的console提示中我们看到,我们使用python成功的向数据库中插入(insert)了一条数据并回显(select)了出来。

       接下来我们到数据库中查询一下是否正确:

       通过检验我们发现完全正确,至此我们学会了如何使用python程序进行数据的插入操作,要是您坚持做到这里,我真想说您简直棒极了。

PyMySQL模块修改数据库

       好了好了,我想您应该还想学关于如何使用python程序进行修改数据库的操作,修改的原理和上面如出一辙,只不过使用了不同的命令和语句。不多言,贴上代码就是我向您说明一切的最好方式。

       通过上图我们可以看出我们使用update语句将name为test的用户的密码改成了mypass,并通过下图的数据库查询验证可知。

       好了,我们已经学习了数据库的基本操作。接下来我们要做一个带窗口的基本OA登录认证系统来回顾我们的所学的知识和去掌握新的知识,大家期待么?just it do!

PyMySQL认证窗口

       话不多说,贴上代码:

未完待续!


回复列表



回复操作

正在加载验证码......

请先拖动验证码到相应位置

发布时间:2020-01-30 14:37:53

修改时间:2020-01-30 14:37:53

查看次数:52

评论次数:0