目录

  • 单元1  初识Python
    • ● 任务 1.1  计算机程序设计语言概述
    • ● 任务 1.2 Python语言
    • ● 任务1.3 Python开发环境搭建
    • ● 任务 1.4 Python的简单使用
    • ● 知识拓展
    • ● 思考与练习
  • 单元2   Python基础知识
    • ● 任务2.1 Python程序基本结构
    • ● 任务2.2  标准输入输出
    • ● 任务2.3  Python对象
    • ● 任务2.4 Python变量
    • ● 任务2.5  数据类型
    • ● 任务2.6 字符串
    • ● 任务2.7 运算符
    • ● 知识拓展
    • ● 思考与练习
  • 单元3   程序流程控制
    • ● 任务3.1  顺序结构
    • ● 任务3.2 选择结构
    • ● 任务3.3  循环结构
    • ● 知识拓展
    • ● 思考与练习
  • 单元4  Python序列
    • ● 任务4.1  序列
    • ● 任务4.2 列表
    • ● 任务4.3  用于序列操作的常用内置函数
    • ● 任务4.4   元组
    • ● 任务4.5  字典
    • ● 任务4.6  集合
    • ● 知识拓展
    • ● 思考与练习
  • 单元5  函数
    • ● 任务5.1 函数的定义与调用
    • ● 任务5.2 函数的参数
    • ● 任务5.3   参数类型
    • ● 任务5.4  变量作用域
    • ● 任务5.5   嵌套调用与递归调用
    • ● 任务5.6  lambda表达式
    • ● 任务5.7  模块
    • ● 知识拓展
    • ● 思考与练习
  • 单元6  异常处理
    • ● 任务6.1 异常处理的基本概念
    • ● 任务6.2 Python的异常处理语句
    • ● 任务6.3  自定义异常
    • ● 知识扩展
    • ● 思考与练习
  • 单元7  文件操作
    • ● 任务7.1  文件的分类
    • ● 任务7.2  文件对象
    • ● 任务7.3  文本文件
    • ● 任务7.4  二进制文件
    • ● 知识拓展
    • ● 思考与练习
  • 单元8  面向对象程序设计
    • ● 任务8.1 面向对象技术的基本概念
    • ● 任务8.2 类与对象
    • ● 任务8.3 类的继承
    • ● 任务8.4 方法重写
    • ● 知识扩展
    • ● 思考与练习
  • 单元9  网络编程基础
    • ● 任务9.1  Socket概述
    • ● 任务9.2   Socket对象内建方法
    • ● 任务9.3  Socket编程实例
    • ● 任务9.4    PythonInternet模块
    • ● 知识扩展
    • ● 思考与练习
  • 单元10    Python标准库及第三方库
    • ● 任务10.1 Python标准库
    • ● 任务10.2 Python第三方库的下载及安装
    • ● 任务10.3  Python第三方库举例
    • ● 知识扩展
    • ● 思考与练习
  • 任务11 用户图形界面(GUI)
    • ● 任务11.1 图形用户界面概述
    • ● 任务11.2 窗体容器和组件
    • ● 任务11.3 界面布局管理
    • ● 任务11.4 文本框组件
    • ● 任务11.5 其他组件
    • ● 任务11.6菜单与对话框
    • ● 任务11.7 鼠标键盘事件
    • ● 知识扩展
    • ● 思考与练习
  • 任务12   Python操作数据库
    • ● 数据库基础
    • ● 结构化查询语言SQL
    • ● Python操作数据库核心API
    • ● Python操作数据库案例
    • ● sqlite3 实训练习案例
    • ● pymysql 数据库实训案例
    • ● 小结  思考与练习
  • 习题解析(线上作业等参考解答)
    • ● 第一单元 初识Python  作业
    • ● 第二单元  Python基础(作业)
    • ● 第三单元  程序流程控制 作业(1)
    • ● 第三单元  程序流程控制  作业(2)
    • ● 第四单元  Python序列   作业
    • ● 第五单元   函数   作业
    • ● 单元六  异常处理  作业
    • ● 单元七、八  文件操作,GUI,面向对象
    • ● 单元九   网络编程基础
    • ● 线上习题解析
    • ● 编程训练
  • 应用题解(综合编程技术)
    • ● 《食品识别小专家》
    • ● 格式输出
    • ● 习题选解
    • ● 每日一帖
    • ● 模拟基本信息
    • ● 模拟基本数据
    • ● 数制转换
    • ● 定制每日运动计划
    • ● 《简易购物系统》
  • 课程章节测验
    • ● 第1次章节测验
  • 复习
    • ● Python基础知识总结
  • 第三方库TOOLS(备用)
    • ● 库模块(可下载)
    • ● 供考查备用的库模块(可下载)
Python操作数据库核心API

三、Python操作数据库核心API


Python的sqlite3模块

Python内置了SQLite数据库,通过内置的sqlite3模块可以直接访问数据库。

sqlite3提供的Python程序上遵守Python DB-API规范。

Python DB-API是为不同的数据库提供的访问接口规范。

该接口定义了一系列必需的对象和数据库存取方式,以便为各种底层数据库系统和多样的数据库接口程序提供一致的访问接口。

下面是sqlite3模块中的部分常量、函数或对象。

(1)sqlite3.version:常量,返回sqlite3模块的版本号。

(2)sqlite3.sqlite_version:常量,返回sqlite数据库的版本号。

(3)sqlite3.Connection :数据库连接对象。

(4)sqlite3.Cursor:游标对象。

(5)sqlite3.Row:行对象。

(6)sqlite3.connect(dbname):函数,链接到数据库,返回Connection对象。

数据库文件的扩展名为.db。

(一)Python DB-API核心类和方法

1、Connection类

close():关闭连接;

commit():提交当前所有事务;

rollback():回滚当前事务;

cursor():返回一个使用该连接的游标对象;

row_factory:指定行的类型,默认为空。

2、Row 类

keys():获取行的所有键。

3、数据库模块(例如sqlite3)

connect():获取数据库的连接;

paramstyle:参数样式;

4、Cursor类

close():关闭游标;

execute(sql):执行 sql 语句;

executemany(sql, datas):重复执行sql语句;

fetchall():获取结果集中所有行;

fetchone():获取结果集中一行;

fetchmany(size):获取结果集中多行;

description:游标的描述信息;

rowcount:获取受影响的行数;

arraysize:指定一次获取多少行;

在线文档:https://www.python.org/dev/peps/pep-0249/

(二)Python操作SQLite流程

(1)导入模块:sqlite3

(2)连接数据库得到Connection对象:sqlite3. connect(文件名)

(3)获取Cursor对象:Connection对象.cursor()

(4)执行数据库的增删查改操作:Cursor对象.execute(sql语句)等

(5)提交数据库操作: Connection对象. commit()

(6)关闭Cursor:Cursor对象.close()

(7)关闭Connection:Connection对象.close()

例:

def insert_data(items):

    connect = sqlite3.connect("school.db")  # 连接数据库     

   cursor = connect.cursor()  # 得到游标     

    insert_sql = """  insert into school (school_code, school, province,    

                     is_985, is_211, is_self_marking, school_type)                 

                     values(?, ?, ?, ?, ?, ?, ?) """

   for item in items:

         cursor.execute(insert_sql, item)

         connect.commit()


def insert_many(items):

     connect = sqlite3.connect("school.db")   # 连接数据库     

    cursor = connect.cursor()  # 得到游标    

    insert_sql = """insert into school (school_code, school, province,   

                    is_985, is_211, is_self_marking, school_type)

                    values(?, ?, ?, ?, ?, ?, ?)"""

   cursor.executemany(insert_sql, items)

   connect.commit()

例:先定义三个函数:查询、修改、删除,并利用它们完成下面任务:

查询所有既是211又是985的学校,并打印出来。

将所有的“西藏自治区”改为“西藏”。

将所有不是以“大学”或“学院”结尾 的记录删除。

def query_data(sql):

    connect = sqlite3.connect("school.db")  # 连接数据库

    cursor = connect.cursor()  # 得到游标    

    cursor.execute(sql)    

   results = cursor.fetchall()    

   connect.commit()  # 提交查询    

   for item in results:        

        print(item)

def update_data(sql):

      connect = sqlite3.connect("school.db")  # 连接数据库

     cursor = connect.cursor()  # 得到游标

    update_num = cursor.execute(sql).rowcount

   connect.commit()  # 提交查询

   print("更新了", update_num, "条记录")

def delete_data(sql):

      connect = sqlite3.connect("school.db")  # 连接数据库、

      cursor = connect.cursor()  # 得到游标

     delete_num = cursor.execute(sql).rowcount

     connect.commit()  # 提交查询

    print("删除了", delete_num, "条记录")


#(1)查询所有既是211又是985的学校,并打印出来

query_data("select * from school where is_211='是' and is_985='是' ")

#(2)将所有的“西藏自治区”改为“西藏”

update_data("update school set province='西藏' where province='西藏自治区'")

#(3)将所有不是以“大学”或“学院”结尾 的记录删除

delete_data("delete from school where school not like '%大学' and school not like '%学院'")


例: 使用sqlite3模块创建数据库 managedb,并在其中创建表goods,表中包含id、name、gnumber、price等4列,其中id为主键(primary 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)

数据库的插入、更新和删除操作

在数中插入、更新、删除记录的一般步骤如下。

(1)建立数据库连接。

(2)创建游标对象cur,使用cur.execute(sql)方法执行SQL的insert、update、delete等语句,完成数据库记录录的插入、更新、删除操作,并根据返回值判断操作结果。

(3)提交操作。

(4)关闭数据库。

例:在goods表中完成记录的插入、更新和刪除操作。

练习:参照上面程序,完成任务要求:插入、更新和刪除操作