实验11:使用Python操作数据库

一、实验目的和要求

1、学会数据库编程接口;

2、学会使用SQLite;

3、学会使用MySQL。

二、实验环境

软件版本:Python 3.10 64_bit

三、实验过程

1、实例1:创建SQLite数据库文件

创建一个mrsoft.db的数据库文件,然后执行SQL语句可创建一个 user(用户表),user表包含id和name两个字段,代码如下:

 1 import sqlite3
2 # 连接到SQLite数据库
3 # 数据库文件是mrsoft.db,如果文件不存在,会自动在当前目录创建
4 conn = sqlite3.connect('mrsoft.db')
5 # 创建一个Cursor
6 cursor = conn.cursor()
7 # 执行一条SQL语句,创建user表
8 cursor.execute("create table user (id int(10) primary key, name varchar(29))")
9 # 关闭游标
10 cursor.close()
11 # 关闭Connection
12 conn.close()

2、实例2:新增用户数据信息

由于在实例1中已经创建了user表,所以本实例可以直接操作user表,向user表中插入3条用户信息。此外,由于是新增数据,需要使用commit()方法提交事务。因为对于增加、修改和删除操作,使用commit()方法提交事务后,如果相应操作失败,可以使用rollback()方法回滚到操作之前的状态。新增用户数据信息的代码如下:

 1 import sqlite3
2 # 连接到sQlite数据库
3 # 数据库文件是mrsoft.db
4 # 如果文件不存在,会自动在当前目录创建
5 conn = sqlite3.connect('mrsoft.db')
6 # 创建一个Cursor
7 cursor = conn.cursor()
8 #执行一条SQL语句,插入一条记录
9 cursor.execute('insert into user (id, name) values ("1", "MRSOFT")')
10 cursor.execute('insert into user (id, name) values ("2","Andy")')
11 cursor.execute('insert into user (id, name) values ("3","明日科技小助手")')
12 # 关闭游标
13 cursor.close()
14 # 提交事务
15 conn.commit()
16 # 关闭Connection
17 conn.close()

3、实例3:使用3种方法查询用户数据信息

(1)分别使用fetchone、fetchmany和fetchall这3种方式查询用户信息,具体代码如下:

 1 import sqlite3
2 # 连接到SQLite数据库,数据库文件是mrsoft.db
3 conn =sqlite3.connect("mrsoft.db")
4 # 创建一个Cursor
5 cursor =conn.cursor()
6 #执行查询语句
7 cursor.execute("select * from user where id > ?",(0,))
8 # 获取查询结果
9 result1 = cursor.fetchall()
10 print(result1)
11 # 关闭游标
12 cursor.close()
13 # 关闭Connection
14 conn.close()

(2)运行结果如图所示:

4、实例4:修改用户数据信息

(1)将SQLite数据库中user表ID为1的数据name字段值“mrsoft”修改为“MR”,并使用fetchAll获取表中的所有数据。具体代码如下:

 1 import sqlite3
2 # 连接到sQLite数据库,数据库文件是mrsoft.db
3 conn = sqlite3.connect('mrsoft.db')
4 # 创建一个Cursor:
5 cursor =conn.cursor()
6 cursor.execute("update user set name = ? where id = ?",("MR",1))
7 cursor.execute("select * from user")
8 result = cursor.fetchall()
9 print(result)
10 # 关闭游标
11 cursor.close()
12 # 提交事务
13 conn.commit()
14 # 关闭Connection:
15 conn.close()

(2)运行结果如图所示:

5、实例5:删除用户数据信息

(1)将SQLite数据库中user表ID为1,2,3的数据删除,并使用fetchAll获取表中所有数据,查看删除后的结果。具体代码如下:

 1 import sqlite3
2 # 连接到SQLite数据库,数据库文件是mrsoft.db
3 conn = sqlite3.connect("mrsoft.db")
4 # 创建一个Cursor:
5 cursor = conn.cursor()
6 cursor.execute("delete from user where id = ?",(1,))
7 cursor.execute("delete from user where id = ?",(2,))
8 cursor.execute("delete from user where id = ?",(3,))
9 cursor.execute("select * from user")
10 result = cursor.fetchall()
11 print(result)
12 # 关闭游标
13 cursor.close()
14 # 提交事务
15 conn.commit()
16 # 关闭Connection:
17 conn.close()

(2)运行结果如图所示:

6、实例6:使用PyMySQL连接数据库

(1)前面我们已经创建了一个MySQL连接“studyPython”,并且在安装数据库时设置了数据库的用户名“root”和密码“root”。下面通过connect()方法接MySQL数据库mrsoft,具体代码如下:

 1 import pymysql
2 # 打开数据库连接,host:主机名或IP;user:用户名;password:密码;database:数据库名称
3 db = pymysql.connect(host="localhost",user= "root",password= "root",database= "mrsoft")
4 #使用cursor()方法创建一个游标对象cursor
5 cursor=db.cursor()
6 # 使用execute()方法执行SQL查询
7 cursor.execute("SELECT VERSION()")
8 # 使用fetchone()方法获取单条数据
9 data=cursor.fetchone()
10 print("Database version : %s " % data)
11 # 关闭数据库链接
12 db.close()

(2)运行结果如图所示:

7、实例7:创建books图书表

(1)具体代码如下:

 1 import pymysql
2 #打开数据库连接
3 db=pymysql.connect(host="localhost",user= "root",password= "root",database= "mrsoft")
4 # 使用cursor()方法创建一个游标对象cursor
5 cursor = db.cursor()
6 # 使用execute()方法执行SQL,如果表存在则删除
7 cursor.execute("DROP TABLE IF EXISTS books")
8 # 使用预处理语句创建表
9 sql = """
10 CREATE TABLE books (
11 id int(8) NOT NULL AUTO_INCREMENT,
12 name varchar(50) NOT NULL,
13 category varchar(50) NOT NULL,
14 price decimal(10,2) DEFAULT NULL,
15 publish_time date DEFAULT NULL,
16 PRIMARY KEY (id)
17 ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
18 """
19 # 执行SQL语句
20 cursor.execute(sql)
21 #关闭数据库连接
22 db.close()

(2)运行结果如图所示:

8、实例8:向books图书表添加图书数据

具体代码如下:

 1 import pymysql
2 # 打开数据库连接
3 db=pymysql.connect(host="localhost",user="root",password="root",database="mrsoft",charset="utf8")
4 # 使用cursor()方法获取操作游标
5 cursor =db.cursor()
6 # 数据列表
7 data=[("零基础学Python","Python","79.80","2018-5-20"),
8 ("Python从入门到精通","Python","69.80","2018-6-18"),
9 ("零基础学PHP","PHP","69.80","2017-5-21"),
10 ("PHP项目开发实战入门","PHP","79.80","2016-5-21"),
11 ("零基础学]ava","Java","69.80","2017-5-21"),
12 ]
13 try:
14 #执行sq1语句,插入多条数据
15 cursor.executemany("insert into books(name, category, price, publish_time) values (%s,%s,%s,%s)",data)
16 # 提交数据
17 db.commit()
18 except:
19 # 发生错误时回滚
20 db.rollback()
21 # 关闭数据库连接
22 db.close()

(2)运行结果如图所示:

9、实战一:获取指定数据表中的信息

(1)打印MySQL中books表图书的名称和价格,代码如下:

1 import pymysql
2 db = pymysql.connect(host="localhost",user= "root",password= "root",database= "mrsoft")
3 cursor = db.cursor()
4 cursor.execute("select name,price from books")
5 result = cursor.fetchall()
6 for i in range(0,len(result)):
7 print("图书:《" + str(result[i][0]) + "》,价格:¥" + str(result[i][1]) + "元")
8 cursor.close()
9 db.close()

(2)运行结果如图所示:

10、实战二:查找指定年份之后的图书信息

(1)查询MySQL中books表图书价格小于70元并且为2017年以后出版的所有图书,代码如下:

1 import pymysql
2 db = pymysql.connect(host="localhost",user= "root",password= "root",database= "mrsoft")
3 cursor = db.cursor()
4 cursor.execute("select name,price,publish_time from books where price < 70 and publish_time >= '2017-01-01'")
5 result = cursor.fetchall()
6 for i in range(0,len(result)):
7 print("图书:《" + str(result[i][0]) + "》,价格:¥" + str(result[i][1]) + "元,出版日期:" + str(result[i][2]))
8 cursor.close()
9 db.close()

(2)运行结果如图所示:

11、实战三:批量删除指定的图书信息

(1)删除MySQL中books表所有分类为PHP的图书,删除完成后查看所有图书,代码如下:

 1 import pymysql
2 db = pymysql.connect(host="localhost",user= "root",password= "root",database= "mrsoft")
3 cursor = db.cursor()
4 cursor.execute("delete from books where category = 'PHP'")
5 cursor.execute("select name,price from books")
6 result = cursor.fetchall()
7 for i in range(0,len(result)):
8 print("图书:《" + str(result[i][0]) + "》,价格:¥" + str(result[i][1]) + "元")
9 cursor.close()
10 db.close()

(2)运行结果如图所示:

python实验报告(第11章)的更多相关文章

  1. Python实验报告——第4章 序列的应用

    实验报告 [实验目的] 1.掌握python中序列及序列的常用操作. 2.根据实际需要选择使用合适的序列类型. [实验条件] 1.PC机或者远程编程环境. [实验内容] 1.完成第四章 序列的应用 实 ...

  2. Python实验报告——第3章 流程控制语句

    实验报告 [实验目的] 1.掌握python中流程控制语句的使用,并能够应用到实际开发中. [实验条件] 1.PC机或者远程编程环境 [实验内容] 1.完成第三章流程控制语句实例01-09,实战一到实 ...

  3. Python实验报告——第2章 Python语言基础

    实验报告 [实验目的] 1.熟悉在线编程平台. 2.掌握基本的 python 程序编写.编译与运行程序的方法. [实验条件] 1.PC机或者远程编程环境 [实验内容] 1.完成第二章实例01-07,实 ...

  4. Python for Informatics 第11章 正则表达式五(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.4 转义字符 之前我们在正 ...

  5. python实验报告(第五周)

    一.实验目的和要求 学会使用字符串的常用操作方法和正确应用正则表达式. 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实例1:使用字符串拼接输出一个关于程序员的笑话 ...

  6. Python实验报告(第四周

    一.实验目的和要求 学会应用列表.元组.字典等序列: 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实例1:输出每日一贴 (1)在IDLE中创建一个名称为tips.p ...

  7. Python for Informatics 第11章 正则表达式六(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.7 调试 Python有一 ...

  8. Python for Informatics 第11章 正则表达式四(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.3 组合查询和抽取 如果我 ...

  9. Python for Informatics 第11章 正则表达式三(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.2 用正则表达式抽取数据 ...

  10. Python for Informatics 第11章 正则表达式二(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.1 正则表达式的字符匹配 ...

随机推荐

  1. PHP全栈开发(八):CSS Ⅸ dispaly & visibility

    display用来设置一个元素如何显示: visibility用来设置一个元素可见还是隐藏. visibility:hidden: 这个语句会使元素在HTML页面中不可见.但是这个元素仍然会占用HTM ...

  2. R及R Studio下载安装教程(超详细)

    R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析.绘图.数据挖掘. 如果你是一个计算机程序的初学者并且急切地想了解计算机的通用编程,R 语言不是一个很理想的选择,可以选择 Pytho ...

  3. 基于tauri打造的HTTP API客户端工具-CyberAPI

    国庆长假和朋友聚会的时候,和朋友谈起最近这段时间捣鼓tauri,写了一个HTTP API客户端工具.『你写了这么多东西,其实有想过是为了啥不?』为了啥这是一个很大的命题,当初每个项目的时候都想过它应该 ...

  4. 使用 Apache Hudi 实现 SCD-2(渐变维度)

    数据是当今分析世界的宝贵资产. 在向最终用户提供数据时,跟踪数据在一段时间内的变化非常重要. 渐变维度 (SCD) 是随时间推移存储和管理当前和历史数据的维度. 在 SCD 的类型中,我们将特别关注类 ...

  5. 8.RabbitMQ系列之RPC

    1. RPC Remote Procedure Call:远程过程调用,一次远程过程调用的流程即客户端发送一个请求到服务端,服务端根据请求信息进行处理后返回响应信息,客户端收到响应信息后结束 2. C ...

  6. Linux crontab定时任务设置

    1.检查是否安装了crontab # rpm -qa | grep crontab 2.重启crontab服务 一定重启,这样确保了crontab服务的开启 # /etc/init.d/crond r ...

  7. 怎样在GitHub上建立仓库、以及怎样实现分支代码的合并。保姆级别的教程

    GitHub官网地址:https://github.com/ 注意:前提是已经注册了GitHub 文章目录 第一步:创建一个新的仓库 第二步.创建一个分支 第三步.编辑和发布更改的内容 第四步.拉取请 ...

  8. 彻底学会Selenium元素定位

    转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/63099961.html 你好,我是测试蔡坨坨. 最近收到不少初学UI自动化测试的小伙伴私信,对于元素的定位还是有些头疼,总 ...

  9. Pandas常用方法

    数据处理很多需要用到pandas,有两个基本类型:Series表示一维数据,DataFrame表示多维.以下是一些常用方法的整理: pandas.Series 创建 Series pandas.Ser ...

  10. Windows 环境搭建 PostgreSQL 物理复制高可用架构数据库服务

    PostgreSQL 高可用数据库的常见搭建方式主要有两种,逻辑复制和物理复制,上周已经写过了关于在Windows环境搭建PostgreSQL逻辑复制的教程,这周来记录一下 物理复制的搭建方法. 首先 ...