使用SQLite

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

与许多其他数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是一种嵌入式数据库,它的数据库就是一个文件。SQLite将整个数据库,包括定义、表、索引以及数据本身,作为一个单独的、可跨平台使用的文件存储在主机中。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中。Python就内置了SQLite3,所以在Python中使用SQLite,不需要安装任何模块,直接使用。

1  创建数据库文件

由于Python中已经内置了SQLite3,所以可以直接使用import语句导入SQLite3模块。Python操作数据库的通用的流程如图1所示。

图1  操作数据库流程

图标 (35)

  实例01  创建SQLite数据库文件

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

import sqlite3

# 连接到SQLite数据库

# 数据库文件是mrsoft.db,如果文件不存在,会自动在当前目录创建

conn = sqlite3.connect('mrsoft.db')

# 创建一个Cursor

cursor = conn.cursor()

# 执行一条SQL语句,创建user表                   

cursor.execute('create  table  user (id int(10)  primary key, name varchar(20))')

# 关闭游标

cursor.close()

# 关闭Connection

conn.close()

上述代码中,使用sqlite3.connect()方法连接SQLite数据库文件mrsoft.db,由于mrsoft.db文件并不存在,所以会在本实例Python代码同级目录下创建mrsoft.db文件,该文件包含了user表的相关信息。mrsoft.db文件所在目录如图2所示。

图2  mrsoft.db文件所在目录

说明:再次运行实例01时,会提示错误信息:sqlite3.OperationalError:table user alread exists,这是因为user表已经存在。

2  操作SQLite

(1)新增用户数据信息

为了向数据表中新增数据,可以使用如下SQL语句:

insert into 表名(字段名1,字段名2,…,字段名n)  values (字段值1,字段值2,…,字段值n)

在user表中,有2个字段,字段名分别为id和name。而字段值需要根据字段的数据类型来赋值,如id是一个长度为10的整型,name是长度为20的字符串型数据。向user表中插入3条用户信息记录,则SQL语句如下:

cursor.execute('insert into user (id, name) values ("1", "MRSOFT")')

cursor.execute('insert into user (id, name) values ("2", "Andy")')

cursor.execute('insert into user (id, name) values ("3", "明日科技小助手")')

下面通过一个实例介绍向SQLite数据库中插入数据的流程。

图标 (35)

  实例02  新增用户数据信息

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

import sqlite3

# 连接到SQLite数据库

# 数据库文件是mrsoft.db

# 如果文件不存在,会自动在当前目录创建

conn = sqlite3.connect('mrsoft.db')

# 创建一个Cursor

cursor = conn.cursor()

# 执行一条SQL语句,插入一条记录

cursor.execute('insert into user (id, name) values ("1", "MRSOFT")')

cursor.execute('insert into user (id, name) values ("2", "Andy")')

cursor.execute('insert into user (id, name) values ("3", "明日科技小助手")')

# 关闭游标

cursor.close()

# 提交事务

conn.commit()

# 关闭Connection

conn.close()

运行该实例,会向user表中插入3条记录。为验证程序是否正常运行,可以再次运行,如果提示如下信息,说明插入成功(因为user表中已经保存了上一次插入的记录,所以再次插入会报错)。

sqlite3.IntegrityError: UNIQUE constraint failed: user.id

(2)查看用户数据信息

查找user表中的数据可以使用如下SQL语句:

select  字段名1,字段名2,字段名3,… from 表名  where 查询条件

查看用户信息的代码与插入数据信息大致相同,不同点在于使用的SQL语句不同。此外,查询数据时通常使用如下3种方式:

l  fetchone():获取查询结果集中的下一条记录。

l  fetchmany(size):获取指定数量的记录。

l  fetchall():获取结果集的所有记录。

下面通过一个实例来学习这3种查询方式的区别。

图标 (35)

  实例03  使用3种方式查询用户数据信息

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

import sqlite3

# 连接到SQLite数据库,数据库文件是mrsoft.db

conn = sqlite3.connect('mrsoft.db')

# 创建一个Cursor

cursor = conn.cursor()

# 执行查询语句

cursor.execute('select * from user')

# 获取查询结果

result1 = cursor.fetchone()

print(result1)

# 关闭游标

cursor.close()

# 关闭Connection

conn.close()

使用fetchone()方法返回的result1为一个元组,执行结果如下:

(1,'MRSOFT')

(1)修改实例03代码,将获取查询结果的语句块代码修改为:

result2 = cursor.fetchmany(2)     # 使用fetchmany方法查询多条数据

print(result2)

使用fetchmany()方法传递一个参数,其值为2,默认为1。返回的result2为一个列表,列表中包含2个元组,运行结果如下:

[(1,'MRSOFT'),(2,'Andy')]

(2)修改实例03代码,将获取查询结果的语句块代码修改为:

result3 = cursor.fetchall()         # 使用fetchmany方法查询多条数据

print(result3)

使用fetchall()方法返回的result3为一个列表,列表中包含所有user表中数据组成的元组,运行结果如下:

 [(1,'MRSOFT'),(2,'Andy'),(3,'明日科技小助手')]

(3)修改实例03代码,将获取查询结果的语句块代码修改为:

cursor.execute('select * from user where id > ?',(1,))

result3 = cursor.fetchall()

print(result3)

在select查询语句中,使用问号作为占位符代替具体的数值,然后使用一个元组来替换问号(注意,不要忽略元组中最后的逗号)。上述查询语句等价于:

cursor.execute('select * from user where id > 1')

执行结果如下:

[(2,'Andy'),(3,'明日科技小助手')]

说明:使用占位符的方式可以避免SQL注入的风险,推荐使用这种方式。

(3)修改用户数据信息

修改user表中的数据可以使用如下SQL语句:

update  表名  set 字段名 = 字段值  where 查询条件

下面通过一个实例来学习一下如何修改表中数据。

图标 (35)

  实例04  修改用户数据信息

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

import sqlite3

# 连接到SQLite数据库,数据库文件是mrsoft.db

conn = sqlite3.connect('mrsoft.db')

# 创建一个Cursor:

cursor = conn.cursor()

cursor.execute('update user set name = ? where id = ?',('MR',1))

cursor.execute('select * from user')

result = cursor.fetchall()

print(result)

# 关闭游标

cursor.close()

# 提交事务

conn.commit()

# 关闭Connection:

conn.close()

执行结果如下:

[(1, 'MR'), (2, 'Andy'), (3, '明日科技小助手')]

(4)删除用户数据信息

删除user表中的数据可以使用如下SQL语句:

delete  from 表名  where 查询条件

下面通过一个实例来学习如何删除表中数据。

图标 (35)

  实例05  删除用户数据信息

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

import sqlite3

# 连接到SQLite数据库,数据库文件是mrsoft.db

conn = sqlite3.connect('mrsoft.db')

# 创建一个Cursor:

cursor = conn.cursor()

cursor.execute('delete from user where id = ?',(1,))

cursor.execute('select * from user')

result = cursor.fetchall()

print(result)

# 关闭游标

cursor.close()

# 提交事务

conn.commit()

# 关闭Connection:

conn.close()

执行上述代码后,user表中ID为1的数据将被删除。运行结果如下:

 [(2, 'Andy'), (3, '明日科技小助手')]

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

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

相关文章

Centos 配置安装Mysql

linux安装配置mysql的方法主要有yum安装和配置安装两种,由于yum安装比较简单,但是会将文件分散到不同的目录结构下面,配置起来比较麻烦,这里主要研究一下配置安装mysql的方法 1、环境说明 centos 7.9 mysql 5.7.372、环境检查 …

讲一下v-model的底层实现原理?

什么是v-model? 在Vue.js中,v-model是一个用于实现双向数据绑定的指令。它通常用于表单控件上,以便能够在视图和数据模型之间自动同步数据。具体来说,当用户在输入框中输入内容时,数据模型会自动更新;当数…

MVVM 架构和MVI架构的优缺点对比

Jetpack MVVM 架构讲解 MVVM(Model-View-ViewModel)架构是 Android 开发中一种常用的架构模式,利用 Android Jetpack 组件,可以更简洁和高效地实现 MVVM。以下是 MVVM 的各个组件及其职责: Model 职责:处理…

浅谈AI对生活中文化领域的影响

随着人工智能技术的飞速发展,它已经渗透到我们生活的方方面面,包括文化领域。AI不仅仅是一个技术工具,它正在以前所未有的方式重塑我们的文化景观,影响着我们对艺术、语言、历史和传统的认识与体验。 艺术创作与欣赏 在文化艺术…

反激式开关电源是如何工作的

反激的变压器可以看作一个带变压功能的电感,是一个buck-boost电路。 反击式开关变压器 反激式开关电源是指使用反激高频变压器隔离输入输出回路的开关电源。“反激”指的是在开关管接通的情况下,当输入为高电平时输出线路中串联的电感为放电状态&#x…

ABAP-03基础数据类型

基本数据类型 数据类型默认大小(byte)有效大小初始值说明示例C11-65535SPACE文本字符(串)‘Name’N11-65535‘00…0’数字文本‘0123’T66‘000000’时间(HHMMSS)‘123010’D88‘00000000’日期(yyyymmdd)‘20090901’I4-231~232…

【PHP小课堂】深入学习PHP中的SESSION(二)

深入学习PHP中的SESSION(二) 今天的学习内容没有太多的代码,主要还是以理论经验为主,当然,主要的依据还是来源于 PHP 官方文档中的说明。在日常的业务开发中,SESSION 安全一直是我们最主要也是最关心的内容…

算法基础精选题单 动态规划(dp)(递推+线性dp)(个人题解)

前言&#xff1a; 一些简单的dp问题。 正文&#xff1a; 题单&#xff1a;237题】算法基础精选题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 (nowcoder.com) 递推&#xff1a; NC235911 走楼梯&#xff1a; #include<bits/stdc.h> using na…

在k8s上部署一个简单的应用

部署一个简单的应用 实验目标&#xff1a; 部署一个简单的 web 应用&#xff0c;比如 Nginx 或者一个自定义的 Node.js 应用。 实验步骤&#xff1a; 创建一个 Deployment。创建一个 Service 来暴露应用。验证应用是否可以通过 Service 访问。 今天我们来做一下昨天分享的可…

Debian12的#!bash #!/bin/bash #!/bin/env bash #!/usr/bin/bash #!/usr/bin/env bash

bash脚本开头可写成 #!/bin/bash , #!/bin/env bash , #!/usr/bin/bash , #!/usr/bin/env bash #!/bin/bash , #!/usr/bin/bash#!/bin/env bash , #!/usr/bin/env bash Debian12的 /bin 是 /usr/bin 的软链接, /sbin 是 /usr/sbin 的软链接, (Debian12默认没有ll命令,用的ls …

Python的pandas读取excel文件中的数据

一、前言 hello呀&#xff01;各位铁子们大家好呀&#xff0c;我是一个在软件测试行业摸爬滚打十几年的老江湖了&#xff0c;今天呢来和大家聊一聊用Python的pandas读取excel文件中的数据。 二、读取Excel文件 使用pandas的read_excel()方法&#xff0c;可通过文件路径直接读…

AI音乐时代的挑战与机遇

近期&#xff0c;音乐领域迎来了一波AI大模型的上线潮&#xff0c;这些模型极大地降低了素人生产音乐的门槛&#xff0c;引发了关于音乐圈是否会被AI彻底颠覆的热烈讨论。虽然这一现象带来了短暂的兴奋&#xff0c;但同时也引发了一系列问题&#xff0c;如AI音乐产品的版权归属…

Techviz:XR协作工作流程,重塑远程电话会议新形式

在当今快速发展的数字环境中&#xff0c;无缝远程协作的需求正在成为企业多部门协同工作的重中之重&#xff0c;尤其是对于制造业、建筑和设计等行业的专业人士而言&#xff0c;这一需求更加迫切。传统的远程电话会议协作形式存在着延滞性&#xff0c;已经渐渐跟不上当今快节奏…

动态更新自建的Redis连接池连接数量

/*** 定时更新Redis连接池信息&#xff0c;防止资源让费*/private static final ScheduledThreadPoolExecutor DYNAMICALLY_UPDATE_REDIS_POOL_THREAD new ScheduledThreadPoolExecutor(1, new ThreadFactory() {Overridepublic Thread newThread(Runnable r) {Thread thread …

项目三OpenStack基础环境配置与API使用

任务一 了解OpenStack基础环境配置 1.1 •数据库服务器 1.2 •消息队列服务 •AMQP系统的组成 任务二 了解并使用OpenStack API 2.1 •什么是RESTful API • RESTful API 是目前比较成熟的 一套Internet应用程序的API软件架构 。 • 表现 层&#xff08; Representation …

汽车IVI中控开发入门及进阶(三十一):视频知识扫盲

有效的视频资源管理需要集成许多不同的底层技术,共同为用户提供给定应用程序的最佳体验。其中许多技术是从早期电视广播中使用的技术演变而来的。其他方法,如用于通过网络流式传输视频的压缩方法,相对较新且不断发展。 以下详细概述了与图形和视频处理和传输相关的一些基本…

云上宝库:三大厂商对象存储安全性及差异性比较

前言 看了几家云厂商的对象存储&#xff0c;使用上有相似也有差异&#xff0c;聊聊阿里云、腾讯云、京东云三家对象存储在使用中存在的风险以及防护措施。 0x01 云存储命名 阿里云对象存储OSS(Object Storage Service)&#xff0c;新用户免费试用三个月&#xff0c;存储包容…

安装idea后配置的全局配置

1、打开IDEA应用&#xff1a;Customize→All settings...&#xff0c;如果启动IDEA后&#xff0c;默认打开的是之前的项目&#xff0c;可以关闭当前项目&#xff1a;File→Close Project&#xff0c;就退到全局配置界面了。 2、打开全局配置界面&#xff1a;Editor→File Encod…

FreeRTOS(一)

一.汇编指令 读内存&#xff1a;Load LDR RO&#xff0c;[R1&#xff0c;#4];读地址"R14"&#xff0c;得到的4字节数据存入RO 写内存&#xff1a;Store STR RO&#xff0c;[R1&#xff0c;#4]:把R0的4字节数据写入地址"R14" 加减 ADD RO.R1&#xff0c;R2R…

torch.topk用法

torch.topk用法 介绍使用示例 介绍 官网介绍&#xff1a;https://pytorch.org/docs/stable/generated/torch.topk.html 在指定维度选取k个最大&#xff08;最小&#xff09;的值。 使用示例 values torch.tensor([[2, 1, 3], [1, 2, 3]]) # values # tensor([[2, 1, 3], #…