15.Python访问数据库

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

1 SQLite数据库

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

1.1 SQLite数据类型

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

INTEGER:有符号的整数类型。

REAL:浮点类型。

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

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

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

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

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

1 安装和启动DB Browser for SQLite

从本章配套代码中找到DB.Browser.for.SQLite-3.11.2-win32.zip安装 包文件,将该文件解压到一个目录中,在解压目录下找到DB Browser fo r 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常用于浏览数据。

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

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

1 查询数据

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

2 修改数据

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

3 sqlite3模块API

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

3.1 数据库连接对象Connection

数据库访问的第一步是进行数据库连接。

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

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

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

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

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

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

3.2 游标对象Cursor

一个Cursor游标对象表示一个数据库游标,游标暂时保存了SQL操 作所影响到的数据。游标是通过数据库连接创建的。

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

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

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

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

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

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

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

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

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

4.1 示例中的数据表

为了介绍数据库的CRUD操作,这里修改1.3节school_db数据库 中的student(学生)表。

为了查询方便,我们预先插入几条记录。

在输入SQL语句后,单击该按钮执行所有SQL语句

4.2 无条件查询

SQL查询语句是SELECT,根据是否带有WHERE子句,分为:无条 件查询和有条件查询,本节先介绍无条件查询。

无条件查询最为简单,没有WHERE子句。

示例代码如下:

通过Python指令运行文件:

4.3 有条件查询

有条件查询带有WHERE子句,WHERE子句是查询条件。 示例代码如下:

通过Python指令运行文件:

4.4 插入数据

数据插入操作SQL语句是INSERT。

示例代码如下:

通过Python指令运行文件:

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

4.5 更新数据

数据更新操作SQL语句是UPDATE。

示例代码如下:

通过Python指令运行文件:

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

4.6 删除数据

数据删除操作SQL语句是DELETE

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

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注入攻击”。()

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新版Pubmed初识

PubMed基本检索操作指南。 PubMed和MEDLINE MEDLINE是美国国立医学图书馆(The National Library of Medicine,NLM)开发的国际性综合生物医学信息书目数据库,是当前国际上最权威的生物医学文献数据库。内容包括美国医学索引&…

c#仿ppt案例

画曲线 namespace ppt2024 {public partial class Form1 : Form{public Form1(){InitializeComponent();}//存放所有点的位置信息List<Point> lstPosition new List<Point>();//控制开始画的时机bool isDrawing false;//鼠标点击开始画private void Form1_MouseD…

两数之和-考察哈希表的运用

题目 给定一个整数数组 n u m s nums nums和一个整数目标值 t a r g e t target target&#xff0c;请你在该数组中找出和为目标值 t a r g e t target target的那 两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同…

04-03 周三 使用印象笔记API批量更新笔记标题

04-03 周三 使用印象笔记API批量更新笔记标题 时间版本修改人描述2024年4月3日11:13:50V0.1宋全恒新建文档 简介 安利印象笔记 在阅读这篇博客之前&#xff0c;首先给大家案例一下印象笔记这个应用&#xff0c;楼主之前使用onenote来记录自己的生活的&#xff0c;也记录了许多…

Android 自定义View 测量控件宽高、自定义viewgroup测量

1、View生命周期以及View层级 1.1、View生命周期 View的主要生命周期如下所示&#xff0c; 包括创建、测量&#xff08;onMeasure&#xff09;、布局&#xff08;onLayout&#xff09;、绘制&#xff08;onDraw&#xff09;以及销毁等流程。 自定义View主要涉及到onMeasure、…

揭秘糖尿病患者稳定控制血糖的关键!

患者在就诊之前一直使用的二甲双胍和达格列净这两种降糖药物&#xff0c;这两种药对于控制血糖是有一定效果的。北京崇文门医院朱学敏主任的建议是继续服用&#xff0c;然后患者空腹血糖在7-8mmol/L左右&#xff0c;餐后血糖稍高&#xff0c;达到9-10mmol/L&#xff0c;但总体上…

怎么把图片改大小尺寸?简单的图片处理技巧分享

图片改变大小尺寸可以通过图像处理软件或在线工具来实现&#xff0c;图片改大小可以有多种作用&#xff1a;首先&#xff0c;改变图片的大小可以使其适应不同的显示设备&#xff0c;如手机、平板电脑或电脑屏幕。这样可以确保图片在不同设备上显示时不会失真或变形;其次&#x…

z-paging 的使用 uniapp+vue3脚手架

uniapp 中没有合适的分页插件, 所以找到了 z-paging的分页插件使用,这里记录一下用法 本人记录的开发项目是在小程序中使用的 安装 (因为本人使用的uniapp是 脚手架方式的)npm install z-paging --save配置 page.json easycom"easycom": {"custom": {&…

【OpenCV】 基础入门(一)初识 Mat 类 | 通过 Mat 类显示图像

&#x1f680; 个人简介&#xff1a;CSDN「博客新星」TOP 10 &#xff0c; C/C 领域新星创作者&#x1f49f; 作 者&#xff1a;锡兰_CC ❣️&#x1f4dd; 专 栏&#xff1a;【OpenCV • c】计算机视觉&#x1f308; 若有帮助&#xff0c;还请关注➕点赞➕收藏&#xff…

IDEA无法连接虚拟机中的Redis的解决方案,无法连接Jedis,无法ping通虚拟机的解决方案

首先&#xff0c;笔者先说明一下自身的情况&#xff0c;怎么连接都连不上&#xff0c;网上的教程全部都看了一遍&#xff0c;基本上没用得上的&#xff0c;这篇文章里面的解决方案包括了笔者能在网上找到了最全面的办法总结&#xff0c;最后终于是连上了 目录 一.连接Jedis出错…

ICV:《中美两国量子技术投资现状及建议概述》

2024年4月2日&#xff0c;ICV发布了《中美两国量子技术投资现状及建议概述》报告&#xff0c;在该报告中提到作为未来科技发展的重要前沿&#xff0c;量子技术领域已引起 30 多个国家和地区的关注&#xff0c;并带动了量子技术产业的发展。量子技术以其革命性的潜力&#xff0c…

【Python项目】AI动物识别工具

目录 背景 技术简介 系统简介 界面预览 背景 成像技术在全球科技发展中扮演了关键角色。在科学研究领域&#xff0c;拍摄所得的图像成为了一种不可或缺的研究工具。特别是在生态学与动物学研究中&#xff0c;鉴于地球的广阔地域和多样的气候条件&#xff0c;利用图像技术捕…