学Python的漫画漫步进阶 -- 第十五步.访问数据库

news2024/11/18 1:38:26

学Python的漫画漫步进阶 -- 第十五步.访问数据库

  • 十五、访问数据库
    • 15.1 SQLite数据库
      • 15.1.1 SQLite数据类型
      • 15.1.2 Python数据类型与SQLite数据类型的映射
      • 15.1.3 使用GUI管理工具管理SQLite数据库
    • 15.2 数据库编程的基本操作过程
    • 15.3 sqlite3模块API
      • 15.3.1 数据库连接对象Connection
      • 15.3.2 游标对象Cursor
    • 15.4 动动手——数据库的CRUD操作示例
      • 15.4.1 示例中的数据表
      • 15.4.2 无条件查询
      • 15.4.3 有条件查询
      • 15.4.4 插入数据
      • 15.4.5 更新数据
      • 15.4.6 删除数据
    • 15.5 点拨点拨——防止SQL注入攻击
    • 15.6 练一练
    • 15.7 访问数据库总结常见方法和库

十五、访问数据库

如果数据量较少,则我们可以将数据保存到文件中;如果数据量较大,则我们可以将数据保存到数据库中。

Python访问数据库的基本步骤如下:

  1. 导入数据库驱动程序:首先需要导入适当的数据库驱动程序,例如对于SQLite数据库,可以使用Python标准库中的sqlite3模块。对于其他数据库系统,需要下载和安装相应的驱动程序。
  2. 建立数据库连接:使用数据库驱动程序提供的函数和方法,建立与数据库的连接。这通常需要提供数据库的地址、用户名和密码等信息。
  3. 创建游标对象:游标是Python与数据库交互的关键对象,可以通过游标执行SQL语句并获取结果。游标对象的创建通常由数据库驱动程序的连接函数返回。
  4. 执行SQL语句:使用游标对象执行SQL语句,例如SELECT、INSERT、UPDATE或DELETE语句。可以通过游标的execute()方法执行SQL语句。
  5. 获取结果:执行SQL语句后,可以通过游标的fetchone()、fetchmany()或fetchall()方法获取查询结果。
  6. 关闭连接:在完成所有操作后,需要关闭数据库连接,释放资源。

Python访问数据库的基本原理是使用数据库驱动程序作为中介,通过连接和游标对象与数据库进行交互。不同的数据库系统有不同的驱动程序和API接口,因此需要根据所使用的数据库系统和相应的文档来进行开发和调试。

在这里插入图片描述

15.1 SQLite数据库

SQLite是嵌入式系统使用的关系数据库,目前的主流版本是SQLite 3。SQLite是开源的,采用C语言编写而成,具有可移植性强、可靠性高、小而易用等特点。SQLite提供了对SQL-92标准的支持,支持多表、索引、事务、视图和触发。

15.1.1 SQLite数据类型

SQLite是无数据类型的数据库,在创建表时不需要为字段指定数据类型。但从编程规范上讲,我们应该指定数据类型,因为数据类型可以表明这个字段的含义,便于我们阅读和理解代码。

SQLite支持的常见数据类型如下:

在这里插入图片描述

INTEGER:有符号的整数类型。

REAL:浮点类型。

TEXT:字符串类型,采用UTF-8和UTF-16字符编码。

BLOB:二进制大对象类型,能够存放任意二进制数据。

15.1.2 Python数据类型与SQLite数据类型的映射

在使用Python访问SQLite数据库时,会经常涉及数据类型的互相转换。它们的映射关系如下表所示。
在这里插入图片描述

15.1.3 使用GUI管理工具管理SQLite数据库

在这里插入图片描述

1 安装和启动DB Browser for SQLite

从本章配套代码中找到DB.Browser.for.SQLite-3.11.2-win32.zip安装包文件,将该文件解压到一个目录中,在解压目录下找到DB Browser for SQLite.exe文件,双击该文件即可启动DB Browser for SQLite工具。

在这里插入图片描述
2 创建数据库
一个SQLite数据库对应一个SQLite数据文件,为了测试DB Browser for SQLite工具,我们要先创建SQLite数据库。
在上图所示的界面单击工具栏中的“新建数据库”按钮,弹出保存文件对话框。
在这里插入图片描述

3 创建数据表
在一个SQLite数据库中可以包含多个数据表。在上图所示的界面单击“保存”按钮,弹出建表对话框。
在这里插入图片描述

4 执行SQL语句
使用DB Browser for SQLite工具,可以执行任意合法的SQL语句。
在这里插入图片描述

5 浏览数据

DB Browser for SQLite常用于浏览数据。

在这里插入图片描述

15.2 数据库编程的基本操作过程

数据库编程主要分为两类:查询(Read)和修改(C插入、U更新、D删除)。

1 查询数据
查询数据时需要6步,在查询过程中需要提取数据结果集,最后释放资源,即关闭游标和数据库。

在这里插入图片描述

2 修改数据修改数据时如上图所示,最多需要6步,在修改过程中如果执行SQL操作成功,则提交数据库事务;如果失败,则回滚事务。最后释放资源,关闭游标和数据库。
在这里插入图片描述

15.3 sqlite3模块API

Python官方提供了sqlite3模块来访问SQLite数据库。

15.3.1 数据库连接对象Connection

数据库访问的第一步是进行数据库连接。
我们可以通过connect(database)函数建立数据库连接,参数database是SQLite数据库的文件路径,如果连接成功,则返回数据库连接对象Connection。

Connection对象有如下重要的方法。

close():关闭数据库连接,在关闭之后再使用数据库连接将引发异常。

commit():提交数据库事务。

rollback():回滚数据库事务。

cursor():获得Cursor游标对象。

在这里插入图片描述

15.3.2 游标对象Cursor

一个Cursor游标对象表示一个数据库游标,游标暂时保存了SQL操作所影响到的数据。游标是通过数据库连接创建的。
在这里插入图片描述

游标Cursor对象有很多方法和属性,其中的基本SQL操作方法如下:

execute(sql[,parameters]):执行一条SQL语句,sql是SQL语句,parameters是为SQL提供的参数,可以是序列或字典类型。返回值是整数,表示执行SQL语句影响的行数。

executemany(sql[,seq_of_params]):执行批量SQL语句,sql是SQL语句,seq_of_params是为SQL提供的参数,seq_of_params是序列。返回值是整数,表示执行SQL语句影响的行数。

在通过execute()和executemany()方法执行SQL查询语句后,
还要通过提取方法从查询结果集中返回数据,相关提取方法如下:

fetchone():从结果集中返回只有一条记录的序列,如果没有数据,则返回None。

fetchmany(size=cursor.arraysize):从结果集中返回小于等于size记录数的序列,如果没有数据,则返回空序列,size在默认情况下是整个游标的行数。

fetchall():从结果集中返回所有数据。

15.4 动动手——数据库的CRUD操作示例

对数据库表中的数据可以进行4类操作:数据插入(Create)、数据查询(Read)、数据更新(Update)和数据删除(Delete),即增、删、改、查。

15.4.1 示例中的数据表

为了介绍数据库的CRUD操作,这里修改15.1.3节school_db数据库中的student(学生)表。
为了查询方便,我们预先插入几条记录。

在这里插入图片描述

在这里插入图片描述
在输入SQL语句后,单击该按钮执行所有SQL语句

15.4.2 无条件查询

SQL查询语句是SELECT,根据是否带有WHERE子句,分为:无条件查询和有条件查询,本节先介绍无条件查询。
无条件查询最为简单,没有WHERE子句。
示例代码如下:
在这里插入图片描述
在这里插入图片描述
通过Python指令运行文件:

在这里插入图片描述

15.4.3 有条件查询

有条件查询带有WHERE子句,WHERE子句是查询条件。
示例代码如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过Python指令运行文件:

在这里插入图片描述

15.4.4 插入数据

数据插入操作SQL语句是INSERT。
在这里插入图片描述
示例代码如下:

在这里插入图片描述

通过Python指令运行文件:

在这里插入图片描述

数据插入成功,可以使用DB Browser for SQLite浏览数据:

在这里插入图片描述

15.4.5 更新数据

数据更新操作SQL语句是UPDATE。
在这里插入图片描述

示例代码如下:

在这里插入图片描述

通过Python指令运行文件:

在这里插入图片描述

数据更新成功,可以使用DB Browser for SQLite浏览数据:

在这里插入图片描述

15.4.6 删除数据

数据删除操作SQL语句是DELETE。

在这里插入图片描述

示例代码如下:
在这里插入图片描述

通过Python指令运行文件:

在这里插入图片描述
数据更新成功,可以使用DB Browser for SQLite浏览数据:
在这里插入图片描述

15.5 点拨点拨——防止SQL注入攻击

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

15.6 练一练

1 请简述数据库编程的基本操作过程。

2 下列选项中哪些是SQLite数据类型?()
A.BOOL B.INTEGER C.TEXT D.BLOB

3 判断对错:(请在括号内打√或×,√表示正确,×表示错误)。
1)如果在数据库事务中所有操作都是查询操作,那么不需要提交或回滚事务。()

2)为占位符传递实参时,可以将实参放到元组或列表中传递。()

3)游标暂时保存了SQL操作所影响到的数据。()

4) SQLite是无数据类型的数据库,在创建表时不需要为字段指定数据类型。()

5)SQLite数据库的TEXT类型映射到Python中的bytes类型。()

6)SQLite数据库与MySQL一样都属于网络数据库。()

7)在访问数据库之前要建立数据库连接,使用完后要关闭数据库连接。()

8)在程序中构建SQL语句构建时,如果采用拼接参数实现,则可能会受到“SQL注入攻击”。()

15.7 访问数据库总结常见方法和库

Python 是一种非常流行的编程语言,因为它易于学习、易于编写和易于维护。Python 提供了许多库和模块,用于访问各种类型的数据库。以下是 Python 访问数据库的一些常见方法和库:

  1. SQLite:SQLite 是一种轻量级数据库引擎,它是 Python 标准库的一部分。Python 提供了 sqlite3 模块,可以使用该模块访问 SQLite 数据库。
  2. MySQL:MySQL 是一种流行的关系型数据库管理系统。Python 提供了许多库来访问 MySQL 数据库,如 PyMySQL、mysql-connector-python 等。
  3. PostgreSQL:PostgreSQL 是一种开源的对象-关系数据库管理系统。Python 提供了 psycopg2 库来访问 PostgreSQL 数据库。
  4. Oracle:Oracle 是一种商业化的关系数据库管理系统。Python 提供了 cx_Oracle 库来访问 Oracle 数据库。
  5. MongoDB:MongoDB 是一种流行的 NoSQL 数据库。Python 提供了 pymongo 库来访问 MongoDB 数据库。
  6. Redis:Redis 是一种内存中的数据结构存储系统,可以用作数据库、缓存和消息代理。Python 提供了 redis 库来访问 Redis 数据库。

总之,Python 提供了许多库和模块,用于访问各种类型的数据库。开发者可以根据需要选择适当的库和模块来访问数据库,并使用 Python 编写高效、可维护的代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1025401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Tensorboard碰到AttributeError: module ‘distutils‘ has no attribute ‘version‘

当出现这个错误时 说明 当前tensorboard的版本和你安装的pytorch版本不匹配,tensorboard版本太 高,pytorch太低。 使用conda list查看你的setuptools版本 conda list我的版本有点高68,所以我需要降低版本,使用以下命令降低版本…

解读|美创深度参与5项电信和互联网行业数据安全标准发布实施

《数据安全法》、《个人信息保护法》等法律法规的颁布实施,坚持安全和发展并重的原则,积极应对复杂严峻的安全风险与挑战,加速构建数据安全保障体系,成为电信和互联网行业重要工作。 “安全发展、标准先行”,标准化工作…

ATLAS 200通过PCIE 接入RK3588-EP模式

ATLAS 200 作为算理模块,可以作为主/协处理器接入RK3588,有两种模式:RC 模式和EP模式 RC模式:rk3588 和 ATLAS 200 可分别独立处理自身业务数据,不存在业务互相依赖,二者可通过网络等方式进行通信,ATLAS …

用它免费查询电商评论数据,轻松实现品牌洞察!

item_review-获得淘宝商品评论 公共参数 名称类型必须描述keyString是调用key(注册账号获取key)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[…

Spring配置非定义的Bean

前言 在前文中,xml配置文件中的Bean都是我们自己定义配置的,例如:UserDaoImpl,UserDAO等。但是在实际开发过程中有些功能类并不是我们自己定义的,而是使用第三方jar包中的,俺么这些Bean要想让Spring进行管…

2023年PMP考试改革情况?新教材和新题型?

改革就是使用新考纲和新教材。教材由第六版变为第七版,这个问题也不大,主要是根据考纲的内容出题,备考学习预测敏捷项目管理内容即可。 没有出新的改为新题型的通知,但要随时做好题型变化的准备,或许题型会增加填空题…

多少得有点升级,才能对得起价格!iPhone15系列电池寿命见长

我有一些好消息。根据我们的电池测试,iPhone 15系列中的每一款机型都比前代机型提供了更好的电池寿命。这可能是由于每部手机中都有稍大的电池和更高效的芯片。 我们对iPhone 15、iPhone 15 Plus、iPhone 15 Pro和iPhone 15 Pro Max进行了Tom’s Guide电池测试&…

SAP DN已发货但是需求还挂在MD04上的异常处理(SE38执行程序:ATP_VBBE_CONSISTENCY OR SDRQCR21)

背景:DN 80074061已经发完货,但是在MD04上还挂着它的需求 处理方法: HANA S4 版本, SE38 执行程序 ATP_VBBE_CONSISTENCY HANA之前的版本执行程序 SDRQCR21 以 ATP_VBBE_CONSISTENCY 为例,先选择模拟模式 执行&…

C#上位机:现代编程中的全能工具?

C#上位机:现代编程中的全能工具? C#作为现代、安全、易用的编程语言,在多领域具有广泛应用,尤其在上位机开发中脱颖而出。输入“777”,即刻获取关于上位机开发和数据可视化的专业学习资料,工业自动化、物…

打造自己的美颜应用:使用视频直播美颜sdk的步骤

当下,视频直播已经成为人们分享自己生活、技能和兴趣的流行方式。但是,随着竞争的加剧,提供高质量视频直播体验变得至关重要。其中一个重要因素是美颜效果,这已经成为吸引观众的重要因素之一。幸运的是,现在有许多视频…

pycharm导入包提示:ModuleNotFoundError: No module named ‘xxx‘

解决方法 1、进入file-settings-projects-python interpreter,点击Show All: 2、在Show All窗口中按如下操作: 保存后即可

电脑内存怎么看?一分钟搞定!

电脑内存是计算机系统中重要的硬件组件之一,它直接影响着系统的性能和运行速度。了解电脑内存的使用情况对于优化系统性能和进行硬件升级非常重要。本文将介绍电脑内存怎么看的三个方法,以便更好地管理计算机性能。 方法1:任务管理器 电脑使…

易点易动RFID固定资产管理系统:实现极速盘点与全生命周期管理

在现代企业管理中,固定资产的盘点和管理一直是一项繁琐而重要的任务。然而,通过易点易动RFID固定资产管理系统,集团公司可以实现固定资产的快速盘点、全生命周期管理以及有效防止资产丢失。本文将详细介绍易点易动RFID固定资产管理系统如何助…

Jmeter性能测试吞吐量控制器使用小结

吞吐量控制器(Throughput Controller)场景: 在同一个线程组里, 有10个并发, 7个做A业务, 3个做B业务,要模拟这种场景,可以通过吞吐量模拟器来实现.。 jmeter性能测试:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到…

【新版】系统架构设计师 - 案例分析 - 系统维护与设计模式

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 系统维护与设计模式典型例题 1典型例题 2 架构 - 案例分析 - 系统维护与设计模式 典型例题 1 某企业两年前自主研发的消防集中控制软件系统在市场上取得了较好的业绩,目前…

【Hash表】出现次数最多的单词-力扣 819

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

GE WESDAC D20ME 模拟输入电子模块

GE WESDAC D20ME 是一款模拟输入电子模块,通常用于工业自动化和控制系统中,用于采集模拟信号和传感器数据。以下是该模块的一些主要产品功能: 模拟输入通道:WESDAC D20ME 模块通常具有多个模拟输入通道,用于接收模拟信…

NI SCXI-1127 伺服驱动模块

NI SCXI-1127 伺服驱动模块是 National Instruments(NI)生产的一种用于伺服控制系统的模块。以下是该模块的一些主要产品功能: 伺服控制:SCXI-1127 模块专门设计用于伺服控制应用。它可以接受控制信号并驱动伺服电机以实现精确的位…

playwright的安装与使用

一、安装 所有安装严格按照指定版本,不然可能会报错,为啥报错我也不知道 1、准备环境 win10(playwright好像不支持win7 python2) 2、 安装python3.7.9(这个是为了兼容robot) https://www.python.org/do…

Spring实例化源码解析之BeanFacotryPostProcessor和BeanDefinitionRegistryPostProcessor(一)

invokeBeanFactoryPostProcessors 前言 AbstractApplicationContext类的refresh方法是spring实例化流程的开始。本章主要是介绍invokeBeanFactoryPostProcessors(beanFactory)方法,对其内部源码进行详细分析。接下来就来看看这句简单的代码后面具体做了什么。Spri…