第8章 Python数据库应用-Python程序设计—从基础开发到数据分析-夏敏捷-清华大学出版社

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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规范。
相关文档
最新文档