第8章 Python数据库应用-Python程序设计—从基础开发到数据分析-夏敏捷-清华大学出版社
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DELETE 语句用于删除表中的行。它的语法格式为: DELETE FROM 表名称 WHERE 列名 = 值
例
DELETE FROM students WHERE stuName = '张三'
说明:DELETE FROM students表示删除表中所有记录。
8.3 SQLite数据库简介
8.3.1 SQLite数据库
第8章 Python数据库应用
8.1 数据库基础
8.1.1 数据库基本概念
数据库(Database) 数据库是数据的集合,数据库能将大量数据按照一定的 方式组织并存储起来,方便的进行管理和维护。 数据库的特征
• 以一定的方式组织、存储数据
• • •
能为多个用户共享 具有尽可能少的冗余代码 与程序彼此独立
或:INSERT INTO students VALUES('2010005','李帆',19,'男', 92,'Changjiang 12','Zhengzhou')。
8.2.4 更新语句UPDATE
Update 语句用于修改表中的数据。语法格式为: UPDATE 表名 SET 列名 = 新值 WHERE 列名 = 某值
8.3.3 SQLite3的函数
1. SQLite时间/日期函数: datetime():产生日期和时间 date():产生日期 time():产生时间 strftime():对以上三个函数产生的日期和时间进行格式化 2. SQlite算术函数: abs(X):返回绝对值 max(X,Y[,...]):返回最大值 min(X,Y,[,...]):返回最小值 random(*):返回随机数 round(X[,Y]): 四舍五入
8.4.1 访问数据库的步骤
Python的数据库模块有统一的接口标准,所以数据库操作都有统一 的模式,操作数据库SQLite3 主要分为以下几步: 1.导入Python SQLite数据库模块
import sqlite3
2. 建立数据库连接,返回Connection对象
con = sqlite3.connect(connectstring) 例:con=sqlite3.connect(“E:\test.db”)
DROP
用于删除表(表的结构、属性以及 索引也会被删除),它的语法格式 为: DROP TABLE 表名称
例
DROP TABLE students
8.2.2 查询语句SELECT
用于从表中选取数据。结果被存储在一个结果表中(称 为结果集)。查询语句语法如下所示: SELECT 字段表 FROM 表名 WHERE 查询条件 GROUP BY 分组字段 ORDER BY 字段[ASC|DESC]
8.2 结构化查询语言SQL
数据库命令和查询操作需要通过SQL语言来执行,SQL (Structured Query Language “结构化查询语言”) 是通用的关系型数据库操作语言。可以查询、定义、操 纵和控制数据库。它是一种非过程化语言。
8.2.1 数据表的建立(CREATE TABLE)和删除(DROP)
例:cur.execute(''CREATE TABLE category(id primary key,sort,name)'')
8.4.1 访问数据库的步骤
5. 获取游标的查询结果集
cur.fetchone():返回结果集的下一行(Row对象);无数据时,返回None。 cur.fetchall():返回结果集的剩余行(Row对象列表),无数据时,返回空List。 cur.fetchmany():返回结果集的多行(Row对象列表),无数据时,返回空List。 例: print cur.fetchall() #提取查询到的数据 也可以直接使用循环输出结果,例如: For row in cur.execute("select * from catagory"): Print(row[0],row[1])
INSERT INTO 语句用于向表格中插入新的行。它的语法格式为: INSERT INTO 数据表 (字段1,字段2,字段3 ……) VALUES (值1,值2, 值3 ……)
例
INSERT INTO students (stuNumber,stuName,age,sex,score,address, city) VALUES('2010005','李帆',19,'男',92,'Changjiang 12', 'Zhengzhou')
字段表
指出所查询列,它可以是一组列名、星号、表达式、变量等构 成。 例:查询students表中所有列的数据。 SELECT * FROM students 例:查询表students中所有记录的stuName, stuNumber字段内 容。 SELECT stuName, stuNumber FROM students
3. 创建游标对象
cur=con.cursor()
4. 使用Cursor对象的execute执行SQL命令返回结果集
cur.execute(sql):执行SQL语句。 cur.execute(sql,parameters):执行代参数的SQL语句。 cur.executemany(sql,seq_of_pqrameters):根据参数执行多次SQL语句。 cur.executescript(sql_script):执行SQL脚本。
数据库管理系统(DBMS)
数据库管理系统(database management system)是一 种操纵和管理数据库的大型软件,是用于建立、使用和 维护数据库。它对数据库进行统一的管理和控制,以保 证数据库的安全性和完整性。它的功能包括:
(1)数据定义功能。 (2)数据存取功能。 (3)数据库运行管理功能。 (4)数据库的建立和维护功能。 (5)数据库的传输。
CREATE TABLE
用于创建数据库中的表。它的 语法格式为: CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, ....)
例
CREATE TABLE students ( stuNumber varchar(12), stuName varchar(255), age integer(2), sex varchar(2), score integer(4), Address varchar(255), )
8.2.2 查询语句SELECT
数据分组Group By
GROUP BY 子句用于结合聚合函数,根据一个或多个列对结果集 进行分组
例
SELECT sex,avg(score) as 平均成绩 FROM students Group By sex
常用的聚合函数
函数 Sum(列名) Max(列名) Min(列名) Avg(列名) Count(列名) 作用 求和 求最大值 求最小值 求平均值 统计记录数
例
UPDATE students SET age=age+1 WHERE sex='女' UPDATE students SET Address = 'Zhongyuanlu 41', City = 'Zhengzhou' WHERE stuName = '李四'
8.2.5 删除记录语句DELETE
8.2.2 查询语句SELECT
查询结果排序Order By
使用ORDER BY子句对查询返回的结果按一列或多列排序。
例
SELECT stuName,stuNumber FROM students ORDER BY stuSCORE DESE 说明:ASC表示升序,为默认值,DESC为降序
8.2.3 添加记录语句INSERT INTO
Python自带一个轻量级的关系型数据库SQLite。SQLite 是e3的数据类型
每个存放在SQLite3数据库中的值,都具有下表中的一种存储类型:
存储类型
NULL INTEGER REAL TEXT BLOB
说明
空值 带符号整数,根据存入的数值的大小占据1,2,3,4,6或者8个字节 浮点数,采用8byte(即双精度)的IEEE格式表示 字符串文本,采用数据库的编码(UTF-8,UTF-16BE 或者UTF16LE) 无类型,可用于保存二进制文件
8.4 Python的SQLite3数据库编程
Python2.5版本以上就内置了SQLite3,所以,在 Python中使用SQLite,不需要安装任何东西,直接使 用。SQLite3数据库使用SQL语言。SQLite作为后端数 据库,可以制作有数据存储需求的工具。Python标准 库中的SQLite3提供该数据库的接口。
8.3.4 SQLite3的模块
Python标准模块sqlite3使用C语言实现,提供访问和操作数据库 SQLite的各种功能。Sqlite3模块主要包括下列常量、函数和对象: Sqlite3.Version:常量,版本号。 Sqlite3.Connect(database):函数,链接到数据库,返回Connect 对象。 Sqlite3.Connect:数据库连接对象。 Sqlite3.Cursor:游标对象。 Sqlite3.Row:行对象。
关系:可以理解为一张二维表,每一个关系都有一个关系名, 也就是表名。 属性: 可以理解为二维表中的一列,在数据库中称为字段。 元组:可以理解为二维表中的一行,在数据库中称为记录。 域:属性的取值范围,也就是数据库中某一列的取值范围。 关键字:一组可以唯一标识元组的属性,数据库中称为主键, 可以由一个或者多个列组成。
常用的数据库管理系统有MS SQL、 SYBASE、DB2、ORACLE、MySQL等。
数据库系统(DBS)
8.1.2 关系型数据库
数据库可分为层次型数据库、对象型数据库和关系型数据库。 关系型数据库是目前的主流数据库类型。关系型数据库不仅描 述数据本身,而且对数据之间的关系进行描述。
常用术语
8.3.3 SQLite3的函数
3. SQLite字符串处理函数 length(x) :返回字符串字符个数 lower(x) :大写转小写 upper(x):小写转大写 substr(x,y,Z):截取子串 like(A,B):确定给定的字符串与指定的模式是否匹配 4.其它函数: typeof(x):返回数据的类型 last_insert_rowid():返回最后插入的数据的ID
8.2.2 查询语句SELECT
WHERE子句
WHERE子句设置查询条件,过滤掉不需要的数据行。WHERE 子句可包括各种条件运算符
(1)比较运算符:>;、>=、=、<;、<=、<>;、!>;、!< 例:SELECT stuNumber FROM students WHERE stuName='李四' (2)范围运算符:BETWEEN…AND…、NOT BETWEEN…AND… 例:SELECT stuName FROM students WHERE age BETWEEN 18 AND 20 (3)列表运算符:IN (项1,项2……)、NOT IN (项1,项2……) 例:SELECT stuName FROM students WHERE country IN ('Henan','BeiJing') (4)逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR 例:SELECT stuName FROM students WHERE age>18 AND sex='女' (5)模式匹配符:LIKE、NOT LIKE 例:SELECT * FROM students WHERE name like “周%%” 例:SELECT * FROM students WHERE score like [80-90] 说明:[]指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。 [^]则要求所匹配对象为指定字符以外的任一个字符。
关系型数据库实体间的联系
DB-API DB-API是一个规范。它定义了一系列必需的对象和 数据库存取方式,以便为各种各样的底层数据库系 统和多种多样的数据库接口程序提供一致的访问接 口。从Python中访问数据库需要接口程序,接口程 序是一个Python模块,它提供数据库客户端(通常 是C语言编写)的接口以供访问,所有的Python接 口程序都一定程度上遵守Python DB-API规范。
例
DELETE FROM students WHERE stuName = '张三'
说明:DELETE FROM students表示删除表中所有记录。
8.3 SQLite数据库简介
8.3.1 SQLite数据库
第8章 Python数据库应用
8.1 数据库基础
8.1.1 数据库基本概念
数据库(Database) 数据库是数据的集合,数据库能将大量数据按照一定的 方式组织并存储起来,方便的进行管理和维护。 数据库的特征
• 以一定的方式组织、存储数据
• • •
能为多个用户共享 具有尽可能少的冗余代码 与程序彼此独立
或:INSERT INTO students VALUES('2010005','李帆',19,'男', 92,'Changjiang 12','Zhengzhou')。
8.2.4 更新语句UPDATE
Update 语句用于修改表中的数据。语法格式为: UPDATE 表名 SET 列名 = 新值 WHERE 列名 = 某值
8.3.3 SQLite3的函数
1. SQLite时间/日期函数: datetime():产生日期和时间 date():产生日期 time():产生时间 strftime():对以上三个函数产生的日期和时间进行格式化 2. SQlite算术函数: abs(X):返回绝对值 max(X,Y[,...]):返回最大值 min(X,Y,[,...]):返回最小值 random(*):返回随机数 round(X[,Y]): 四舍五入
8.4.1 访问数据库的步骤
Python的数据库模块有统一的接口标准,所以数据库操作都有统一 的模式,操作数据库SQLite3 主要分为以下几步: 1.导入Python SQLite数据库模块
import sqlite3
2. 建立数据库连接,返回Connection对象
con = sqlite3.connect(connectstring) 例:con=sqlite3.connect(“E:\test.db”)
DROP
用于删除表(表的结构、属性以及 索引也会被删除),它的语法格式 为: DROP TABLE 表名称
例
DROP TABLE students
8.2.2 查询语句SELECT
用于从表中选取数据。结果被存储在一个结果表中(称 为结果集)。查询语句语法如下所示: SELECT 字段表 FROM 表名 WHERE 查询条件 GROUP BY 分组字段 ORDER BY 字段[ASC|DESC]
8.2 结构化查询语言SQL
数据库命令和查询操作需要通过SQL语言来执行,SQL (Structured Query Language “结构化查询语言”) 是通用的关系型数据库操作语言。可以查询、定义、操 纵和控制数据库。它是一种非过程化语言。
8.2.1 数据表的建立(CREATE TABLE)和删除(DROP)
例:cur.execute(''CREATE TABLE category(id primary key,sort,name)'')
8.4.1 访问数据库的步骤
5. 获取游标的查询结果集
cur.fetchone():返回结果集的下一行(Row对象);无数据时,返回None。 cur.fetchall():返回结果集的剩余行(Row对象列表),无数据时,返回空List。 cur.fetchmany():返回结果集的多行(Row对象列表),无数据时,返回空List。 例: print cur.fetchall() #提取查询到的数据 也可以直接使用循环输出结果,例如: For row in cur.execute("select * from catagory"): Print(row[0],row[1])
INSERT INTO 语句用于向表格中插入新的行。它的语法格式为: INSERT INTO 数据表 (字段1,字段2,字段3 ……) VALUES (值1,值2, 值3 ……)
例
INSERT INTO students (stuNumber,stuName,age,sex,score,address, city) VALUES('2010005','李帆',19,'男',92,'Changjiang 12', 'Zhengzhou')
字段表
指出所查询列,它可以是一组列名、星号、表达式、变量等构 成。 例:查询students表中所有列的数据。 SELECT * FROM students 例:查询表students中所有记录的stuName, stuNumber字段内 容。 SELECT stuName, stuNumber FROM students
3. 创建游标对象
cur=con.cursor()
4. 使用Cursor对象的execute执行SQL命令返回结果集
cur.execute(sql):执行SQL语句。 cur.execute(sql,parameters):执行代参数的SQL语句。 cur.executemany(sql,seq_of_pqrameters):根据参数执行多次SQL语句。 cur.executescript(sql_script):执行SQL脚本。
数据库管理系统(DBMS)
数据库管理系统(database management system)是一 种操纵和管理数据库的大型软件,是用于建立、使用和 维护数据库。它对数据库进行统一的管理和控制,以保 证数据库的安全性和完整性。它的功能包括:
(1)数据定义功能。 (2)数据存取功能。 (3)数据库运行管理功能。 (4)数据库的建立和维护功能。 (5)数据库的传输。
CREATE TABLE
用于创建数据库中的表。它的 语法格式为: CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, ....)
例
CREATE TABLE students ( stuNumber varchar(12), stuName varchar(255), age integer(2), sex varchar(2), score integer(4), Address varchar(255), )
8.2.2 查询语句SELECT
数据分组Group By
GROUP BY 子句用于结合聚合函数,根据一个或多个列对结果集 进行分组
例
SELECT sex,avg(score) as 平均成绩 FROM students Group By sex
常用的聚合函数
函数 Sum(列名) Max(列名) Min(列名) Avg(列名) Count(列名) 作用 求和 求最大值 求最小值 求平均值 统计记录数
例
UPDATE students SET age=age+1 WHERE sex='女' UPDATE students SET Address = 'Zhongyuanlu 41', City = 'Zhengzhou' WHERE stuName = '李四'
8.2.5 删除记录语句DELETE
8.2.2 查询语句SELECT
查询结果排序Order By
使用ORDER BY子句对查询返回的结果按一列或多列排序。
例
SELECT stuName,stuNumber FROM students ORDER BY stuSCORE DESE 说明:ASC表示升序,为默认值,DESC为降序
8.2.3 添加记录语句INSERT INTO
Python自带一个轻量级的关系型数据库SQLite。SQLite 是e3的数据类型
每个存放在SQLite3数据库中的值,都具有下表中的一种存储类型:
存储类型
NULL INTEGER REAL TEXT BLOB
说明
空值 带符号整数,根据存入的数值的大小占据1,2,3,4,6或者8个字节 浮点数,采用8byte(即双精度)的IEEE格式表示 字符串文本,采用数据库的编码(UTF-8,UTF-16BE 或者UTF16LE) 无类型,可用于保存二进制文件
8.4 Python的SQLite3数据库编程
Python2.5版本以上就内置了SQLite3,所以,在 Python中使用SQLite,不需要安装任何东西,直接使 用。SQLite3数据库使用SQL语言。SQLite作为后端数 据库,可以制作有数据存储需求的工具。Python标准 库中的SQLite3提供该数据库的接口。
8.3.4 SQLite3的模块
Python标准模块sqlite3使用C语言实现,提供访问和操作数据库 SQLite的各种功能。Sqlite3模块主要包括下列常量、函数和对象: Sqlite3.Version:常量,版本号。 Sqlite3.Connect(database):函数,链接到数据库,返回Connect 对象。 Sqlite3.Connect:数据库连接对象。 Sqlite3.Cursor:游标对象。 Sqlite3.Row:行对象。
关系:可以理解为一张二维表,每一个关系都有一个关系名, 也就是表名。 属性: 可以理解为二维表中的一列,在数据库中称为字段。 元组:可以理解为二维表中的一行,在数据库中称为记录。 域:属性的取值范围,也就是数据库中某一列的取值范围。 关键字:一组可以唯一标识元组的属性,数据库中称为主键, 可以由一个或者多个列组成。
常用的数据库管理系统有MS SQL、 SYBASE、DB2、ORACLE、MySQL等。
数据库系统(DBS)
8.1.2 关系型数据库
数据库可分为层次型数据库、对象型数据库和关系型数据库。 关系型数据库是目前的主流数据库类型。关系型数据库不仅描 述数据本身,而且对数据之间的关系进行描述。
常用术语
8.3.3 SQLite3的函数
3. SQLite字符串处理函数 length(x) :返回字符串字符个数 lower(x) :大写转小写 upper(x):小写转大写 substr(x,y,Z):截取子串 like(A,B):确定给定的字符串与指定的模式是否匹配 4.其它函数: typeof(x):返回数据的类型 last_insert_rowid():返回最后插入的数据的ID
8.2.2 查询语句SELECT
WHERE子句
WHERE子句设置查询条件,过滤掉不需要的数据行。WHERE 子句可包括各种条件运算符
(1)比较运算符:>;、>=、=、<;、<=、<>;、!>;、!< 例:SELECT stuNumber FROM students WHERE stuName='李四' (2)范围运算符:BETWEEN…AND…、NOT BETWEEN…AND… 例:SELECT stuName FROM students WHERE age BETWEEN 18 AND 20 (3)列表运算符:IN (项1,项2……)、NOT IN (项1,项2……) 例:SELECT stuName FROM students WHERE country IN ('Henan','BeiJing') (4)逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR 例:SELECT stuName FROM students WHERE age>18 AND sex='女' (5)模式匹配符:LIKE、NOT LIKE 例:SELECT * FROM students WHERE name like “周%%” 例:SELECT * FROM students WHERE score like [80-90] 说明:[]指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。 [^]则要求所匹配对象为指定字符以外的任一个字符。
关系型数据库实体间的联系
DB-API DB-API是一个规范。它定义了一系列必需的对象和 数据库存取方式,以便为各种各样的底层数据库系 统和多种多样的数据库接口程序提供一致的访问接 口。从Python中访问数据库需要接口程序,接口程 序是一个Python模块,它提供数据库客户端(通常 是C语言编写)的接口以供访问,所有的Python接 口程序都一定程度上遵守Python DB-API规范。