1、12 Python的数据库编程第12章 Python的数据库编程 本章内容本章内容 数据库的基础知识 SQLITE数据库 关系数据库语言SQL Python的SQLITE3编程 数据库编程应用Python支持Sybase、SQL Server、SQLite等多种数据库,本章主要介绍 Python自带的关系型数据库SQLite的应用12.1 数据库的基础知识数据库的基础知识 数据库的概念数据库的概念 数据库(Data Base,DB)将大量数据按照一定的方式组织并存储起来,是相互关联的数据的集合。数据库为用户提供安全、高效、快速检索和修改的数据集合。数据库在数据库系统中使用,其核心是数据库管理系
2、统。1数据库系统2数据库管理系统 数据定义功能。数据操纵功能。数据库的运行管理。数据通信功能。12.1 数据库的基础知识数据库的基础知识 关系型数据库关系型数据库关系型数据库是目前的主流数据库。1关系型数据库的基本概念 关系、元组、属性、域、关键字。2.实体间联系的类型 实体是指客观世界的事物,实体的集合构成实体集,在关系数据库中用二维表来描述实体。实体之间有各种各样的联系,归纳起来有以下3种类型。一对一联系(1 1),一对多联系(1 n),多对多联系(m n)12.1 数据库的基础知识数据库的基础知识 Python的的sqlite3模块模块 Python内置了SQLite数据库,通过内置的s
3、qlite3模块可以直接访问数据库。sqlite3提供的Python程序上遵守Python DB-API规范。Python DB-API是为不同的数据库提供的访问接口规范。该接口定义了一系列必需的对象和数据库存取方式,以便为各种底层数据库系统和多样的数据库接口程序提供一致的访问接口。12.2 SQLite数据库 SQLite数据库简介数据库简介 SQLit是用C语言编写的嵌入式数据库,体积很小。SQLite不需要一个单独的服务器进程或操作系统(无服务器的),也不需要配置。一个完整的 SQLite数据库存储在单一的跨平台的磁盘文件中。SQLite支持SQL92(SQL2)标准的大多数查询语言的功
4、能,并提供了简单和易于使用的APl。12.2 SQLite数据库 下载和安装下载和安装SQLite数据库数据库 SQLite是开源的数据库,可以在其官网免费下载。SQLite3是SQLite的第3个版本。SQLite数据库不需要安装,直接运行sqlite3.exe,即可打开SQLite数据库的命令行窗口。12.2 SQLite数据库 SQLite3常用命令常用命令 SQLite3命令可以分为两类,一类是SQLite3交互模式命令,另一类是SQL命令。SQLite3交互模式常用的命令。交互命令交互命令功能功能sqlite3.exe dbname启动sqlite3的交互模式,并创建dbname数据
5、库.open dbname创建数据库或打开数据库.databases显示当前打开的数据库文件.tables查看当前数据库下的所有表.schema tbname查看表结构信息.exit退出交互模式.help列出命令的提示信息12.2 SQLite数据库 SQLite3的数据类型的数据类型 SQLite数据库中的数据分为整数、小数、字符、日期、时间等类型。动态的数据类型,数据库管理系统会根据列值自动判断列的数据类型。静态数据类型取决于它的存储单元(所在列)的类型。SQLite3的动态数据类型向后兼容其他数据库普遍使用的静态类型。SQLite3使用弱数据类型。SQLite3的表可以不声明列的类型。1
6、2.2 SQLite数据库 sqlite3模块中的模块中的对象对象 下面是sqlite3模块中的部分常量、函数或对象。(1)sqlite3.version:常量,返回sqlite3模块的版本号。(2)sqlite3.sqlite_version:常量,返回sqlite数据库的版本号。(3)sqlite3.connect:数据库连接对象。(4)sqlite3.Cursor:游标对象。(5)sqlite3.Row:行对象。(6)sqlite3.connect(dbname):函数,链接到数据库,返回connect对象。12.2 SQLite数据库 SQLite3的的函数函数 SQLite数据库提供
7、算术、字符串、日期、时间等操作函数,方便用户处理数据库中的数据。函数需要在SQLite的命令窗口使用select命令运行。SQLite3算术函数算术函数abs(x)返回绝对值max(x,y,)返回最大值min(x,y,)返回最小值random(*)返回随机数round(x,y)四含五入SQLite3字符串函数字符串函数length(x)返回字符个数lower(x)大写转小写upper(x)小写转大写substr(x,y,Z)截取子串like(A,B)确定给定的字符串与指定的模式是否匹配SQLite3时间时间/日期函数日期函数date()产生日期datetime()产生日期和时间time()产生
8、时间strftime()格式化字符串12.2 SQLite数据库 创建创建SQLite数据库数据库 运行SQLite数据库的同时,通过参数创建Sqlite数据库,方法如下。sqlite3 dbname 数据库文件的扩展名为.db。如果数据库文件存在,则打开该数据库;否则创建该数据库。12.3 关系数据库语言SQL SQL是Structured Query Language的缩写,即结构化查询语言 SQL命令的执行,需要注意下面的问题。SQL命令需要在数据库管理系统中运行。在SQLite窗口运行SQL命令,需要在SQL语句后加英文的分号后回车执行。SQL命令不区分大小写。12.3 关系数据库语言
9、SQL 数据表的建立和删除数据表的建立和删除 在SQL中,使用 create table语句创建表,delete table删除表。创建表的语法结构和示例创建表的语法结构和示例12.3 关系数据库语言SQL 向表中添加列向表中添加列 alter table语句向表中添加列。alter table add column 例12-3 为表 employee中增加一列,列名为tele,数据类型为varchar,长度为50,列属性不允许为空。alter table employee add column tele varchar(50)not null schema employee用于查看表 epl
10、oyee的结构。12.3 关系数据库语言SQL 向表中插人数据向表中插人数据 insert语句向表中插入数据。insert into values()例12-4 将下面数据插入到employee表中。1132,李四,男,部门经理,7548.6,11insert into employee(emp_id,emp_name,sex,title,wage,dep_id)values(1132,李四,男,部门经理,7548.6,11)12.3 关系数据库语言SQL 修改表中的数据修改表中的数据 update语句修改表中的数据。update set=,=where例10-5 将employee表中,李四
11、的工资改为7550元。update employee set wage=7550 where emp_name=李四将李四的工资增加550元update employee set wage=wage+550 where emp_name=李四12.3 关系数据库语言SQL 删除数据删除数据 DELETE语句删除表中的数据。delete from where from指定从哪个表中删除数据,where指定被删除的记录所满足的条件,如果省略where子句,则删除该表中的全部记录。例10-6 删除表employee中性别为女的记录。delete from employee where sex=女12
12、.3 关系数据库语言SQL 查询数据查询数据 SQL语句创建查询使用的是select命令,基本形式是由select-from-where子句组成。select|*from join on where group by having order by asc|desc 例10-7 检索工资高于6000元的雇员的雇员号和姓名信息。select emp_id,emp_name from employee where wage6000 例10-8 检索性别为“男”,并且工资高于5500的的雇员信息。select*from employee where sex=男 and wage550012.4 Py
13、thon的的SQLite3编程编程 访问数据库的步骤访问数据库的步骤 访问SQLite3数据库主要过程如下。(1)导入 Python sqlite3模块(2)建立数据库连接的Connection对象(3)创建游标对象(4)使用Cursor对象的execute()方法执行SQL命令返回结果集(5)获取游标的查询结果集(6)数据库的提交和回滚(7)关闭Cursor对象和Connection对象12.4 Python的的SQLite3编程编程 import sqlite3 dbstr=d:/sqlite/test.db#连接到数据库,还回sqlite3.Connection对象 con=sqlite
14、3.connect(dbstr)cur=con.cursor()cur.execute(insert into emp values(101,Jack,23)cur.execute(select*from emp)print(cur.fetchall()#提取查询到的数据 mit()#事务提交。cur.close()#关闭Cursor对象。12.4 Python的的SQLite3编程编程 创建数据库和表创建数据库和表 例10-11 使用sqlite3模块创建数据库 managedb,并在其中创建表goods,表中包含id、name、gnumber、price等4列,其中id为主键(primar
15、y key)。import sqlite3#导入sqlite3模块 dbstr=d:/sqlite/managedb.db con=sqlite3.connect(dbstr)#创建 sqlite数据库 stmt=create table goods(id int primarykey,name,gnumber integer(2),price)con.execute(stmt)12.4 Python的的SQLite3编程编程 数据库的插入、更新和删除操作数据库的插入、更新和删除操作 在数中插入、更新、删除记录的一般步骤如下。(1)建立数据库连接。(2)创建游标对象cur,使用cur.exec
16、ute(sql)方法执行SQL的insert、update、delete等语句,完成数据库记录录的插入、更新、删除操作,并根据返回值判断操作结果。(3)提交操作。(4)关闭数据库。例12-12 在goods表中完成记录的插入、更新和刪除操作。12.5 SQLite编程的应用 使用SQLite数据库实现一个简单的订单管理系统。数据库名称为test.db,订单数据保存在order1表中,实现的是订单数据的增删改查的功能。应用程序中涉及的函数及功能如表。函数名称函数名称函数功能函数功能getConnection()连接数据库的通用函数showAllData()显示所有记录getOrderListIn
17、fo()获得用户输入数据addRec()增加记录delRec()删除记录modifyRec(修改记录searchRec()查找记录continueif()判断是否继续操作小结 数据库、数据库系统、数据库管理系统等基本概念 关系型数据库是目前的主流数据库,关系与二维表是等价的 实体之间的对应关系称为实体间的联系 Python自带的关系型数据库SQLite是一种开源的、嵌入式数据库 SQLite3交互模式常用的命令,SQLite3数据库使用动态的数据类型 SQL语言基本知识 用SQLite数据库实现一个简单的订单管理系统作业:设计GUI界面,模拟用户登录功能,用户输入用户名和密码,如果正确提示登录成功;否则提示登录失败,用户的密码信息保存在SQLite数据库中。