当前位置: 首页 > news >正文

SQLite3进行数据库各项常用操作

目录

  • 前言
  • 1、SQLite介绍
  • 2、通过SQLite创建一个数据库文件
  • 3、往数据库文件中插入数据
  • 4、数据库文件信息查询
  • 5、修改数据库中的内容
  • 6、删除数据库中的内容

前言

本文是通过轻量化数据库管理工具SQLite进行的基础操作和一些功能实现。

1、SQLite介绍

SQLite是一个广泛使用的嵌入式SQL数据库引擎,以其高可靠性、全功能集、独立性、简单性、易配置和良好的文档而闻名。SQLite通常被用于那些不需要复杂服务器数据库系统的场合,比如移动应用、桌面应用以及只需要单用户访问数据库的场合。

SQLite的特点主要包含:

  • 轻量级数据库:SQLite是一个轻量级的数据库库,不是一个完整的数据库系统。它被设计为无需配置、无需服务器的嵌入式SQL数据库引擎。
  • 单一文件:SQLite数据库存储在一个单一的磁盘文件中,便于携带、复制和共享。
  • 本地存储:常用于设备或应用程序中嵌入式数据库存储需求,如手机应用程序、游戏、个人工具等。
  • 不需要独立的服务器过程:SQLite在应用程序进程中运行,不需要配置和管理数据库服务器。
  • 用途:适用于轻量级应用、原型开发、教育、小型应用程序等,以及需要简单数据存储但不需要高并发和高性能的场景。
    在这里插入图片描述

2、通过SQLite创建一个数据库文件

通过代码创建一个数据库文件,我们假设要创建的数据库文件是"mhdata.db"。

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

如果文件已经存在,则会报错提示:
sqlite3.OperationalError: table user already exists

代码显示如下:

import sqlite3
# 连接到SQLite数据库
conn = sqlite3.connect('mhdata.db')
# 创建一个Cursor:
cursor = conn.cursor()
# 执行一条SQL语句,创建user表:                    
cursor.execute('create table user (id int(10)  primary key, name varchar(20))')
# 关闭游标
cursor.close()
# 提交事务:
conn.commit()
# 关闭Connection:
conn.close()

在这里插入图片描述
我们通过Navicate Preminm打开就可以看到生成了一个名字为mhdata的表,且有两列,对应的标题分别为id和name,下面的内容为空(因为此时只创建了表和标题,自然是没有内容的)。

3、往数据库文件中插入数据

我们继续使用SQLite往刚才的mhdata.db文件中插入数据,代码如下:

import sqlite3# 如果文件不存在,会自动在当前目录创建:
conn = sqlite3.connect('mhdata.db')
# 创建一个Cursor:
cursor = conn.cursor()# 首先,创建一个名为user的表,如果表已存在,SQL语句不会有任何效果
cursor.execute('''CREATE TABLE IF NOT EXISTS user(id TEXT PRIMARY KEY, name TEXT)''')# 继续执行一条SQL语句,插入一条记录:
cursor.execute('insert into user (id, name) values ("1", "语文")')
cursor.execute('insert into user (id, name) values ("2", "数学")')
cursor.execute('insert into user (id, name) values ("3", "英语")')
cursor.execute('insert into user (id, name) values ("4", "物理")')
cursor.execute('insert into user (id, name) values ("5", "化学")')# 关闭游标
cursor.close()
# 提交事务:
conn.commit()
# 关闭Connection:
conn.close()

执行代码后,就在mhdata.db表格中插入了5条数据。
我们将mhdata.db表格中数据可视化展示如下:
在这里插入图片描述

注: 关于cursor.execute(‘’‘CREATE TABLE IF NOT EXISTS user (id TEXT PRIMARY KEY, name TEXT)’‘’)的含义解释:

  • CREATE TABLE IF NOT EXISTS: 这是SQL命令的一部分,用来创建一个新的表。IF NOT EXISTS是一个条件子句,它确保命令只在名为user的表不存在时执行。如果表已经存在,SQL操作将不会做任何事情,以此避免覆盖或报错。
  • user: 这是要创建的表的名称。
  • (id TEXT PRIMARY KEY, name TEXT): 这是定义表的结构的部分。在这个括号内,我们定义了表中的列及其数据类型:
  • id TEXT: 这指创建一个名为id的列,用来存储文本类型的数据。
  • PRIMARY KEY: 这个关键词指定id列是表的主键,意味着这个列的值必须唯一,不能重复。主键通常用来唯一地识别表中的每一行记录。
  • name TEXT: 这指创建另一个名为name的列,同样用来存储文本数据。
  • 综上,这条SQL语句的作用是确保在数据库中存在一个名为user的表,其中包含id(主键)和name这两个文本类型的列,从而后续的插入操作能够正常执行。

4、数据库文件信息查询

这里我们查询下刚才生成的mhdata.db文件,注意要让查询的mhdata.db文件和我们的.py在同一个目录下面,或者是指定查询目录。

可以执行查询的代码如下:

import sqlite3
# 连接到SQLite数据库,数据库文件是mhdata.db
# 可以在这里修改路径
conn = sqlite3.connect('mhdata.db')
# 创建一个Cursor:
cursor = conn.cursor()
# 执行查询语句:
cursor.execute('select * from user')
# 获取查询结果:
result1 = cursor.fetchall()
print(result1)# 关闭游标
cursor.close()
# 关闭Connection:
conn.close()

我们查看下执行后的结果:

[('1', '语文'), ('2', '数学'), ('3', '英语'), ('4', '物理'), ('5', '化学')]

我们结合上面第三节的显示可以看出两者的结果保持一致。

5、修改数据库中的内容

我们修改上面mhdata.db中的某一条数据内容,如将(“1”,“语文”)改成(“1”,“生物”),那么执行代码如下:

import sqlite3
# 连接到SQLite数据库,数据库文件是mhdata.db
conn = sqlite3.connect("mhdata.db")
# 创建一个Cursor:
cursor = conn.cursor()
cursor.execute('update user set name = ? where id = ?',('生物',1))
cursor.execute('select * from user')
result = cursor.fetchall()
print(result)
# 关闭游标
cursor.close()
# 提交事务
conn.commit()
# 关闭Connection:
conn.close()

执行后的结果展示为:

[('1', '生物'), ('2', '数学'), ('3', '英语'), ('4', '物理'), ('5', '化学')]

由此可见达到我们要修改其中某一条数据的目的,如果想一次修改多条数据,可以参照( 3、往数据库文件中插入数据),直接多次执行cursor.execute()语句即可。

6、删除数据库中的内容

经过刚才的修改操作,现在我们删除数据库文件中的(“1”,“生物”),执行代码如下:

import sqlite3
# 连接到SQLite数据库,数据库文件是 mhdata.db
conn = sqlite3.connect("mhdata.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()

执行后的结果展示:

[('2', '数学'), ('3', '英语'), ('4', '物理'), ('5', '化学')]

到这里,基本完成了用SQLite3进行数据库的基本操作,包含:数据库文件的建立,数据插入、数据查询、数据修改和数据删除的基本操作。

博主还将另外一个基于本篇博客的升级版发布如下:一个程序解决SQLite常见的各项操作

相关文章:

SQLite3进行数据库各项常用操作

目录 前言1、SQLite介绍2、通过SQLite创建一个数据库文件3、往数据库文件中插入数据4、数据库文件信息查询5、修改数据库中的内容6、删除数据库中的内容 前言 本文是通过轻量化数据库管理工具SQLite进行的基础操作和一些功能实现。 1、SQLite介绍 SQLite是一个广泛使用的嵌入…...

Debian GNU/Linux 安装docker与docker compose

安装 Docker 更新包列表 sudo apt update 安装必要的软件包,以便让 APT 可以通过 HTTPS 使用存储库: sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common 添加 Docker 的官方 GPG 密钥: cu…...

图片标注编辑平台搭建系列教程(2)——fabric.js简介

文章目录 综述数据管理图形渲染图形编辑事件监听预告 综述 fabric提供了二维图形编辑需要的所有基础能力,包括:数据管理、图形渲染、图形编辑和事件监听。其中,图形编辑可以通过事件监听和图形渲染来实现,所以可以弃用。数据管理…...

Debian linux版本下运行的openmediavault网盘 千兆网卡升级万兆

一、适用场景 1、使用vmware ESXi虚拟化平台运行多种不同应用服务器时,其中网盘服务器采用开源的openmediavault搭建; 2、将老专业服务器升级千兆网为万兆网; 3、需要转移的数据量大的企业或用户; 4、从服务器到服务器的数据转移…...

前端 CSS 经典:grid 栅格布局

前言:Grid 布局是将容器划分成"行"和"列",产生单元格,然后将"项目"分配给划分好的单元格,因为有行和列,可以看作是二维布局。 一 术语 1. 容器 采用网格布局的区域,也就是…...

多输入多输出通道

文章目录 图像卷积填充和步幅填充步幅 多输入多输出通道1x1卷积层 图像卷积 卷积原理: 就是将之前的大的图片,定义一个核函数,然后经过移动并运算将图片变小了.也就是将图像压缩提取整合特征值. 这里利用的时乘法. 填充和步幅 填充 在应用多层卷积时,我们常常…...

http响应练习—在服务器端渲染html(SSR)

一、什么是服务器端渲染(SSR) 简单说,就是在服务器上把网页生成好,整个的HTML页面生成出来,生成出的页面已经包含了所有必要的数据和结构信息,然后直接发给浏览器进行展现。 二、例题 要求搭建http服务&a…...

C++(8): std::deque的使用

1. std::deque std::deque 是 C 标准库中的一个双端队列容器。这个容器支持在序列的两端进行快速的插入和删除操作,其时间复杂度为常数时间 O(1)。同时,std::deque 也提供了对序列中任意元素的随机访问。 2. 特点 (1)双端操作&…...

openwrt开发包含路由器基本功能的web问题记录

1.这里的扫描怎么实现的先找一些luci代码,在openwrt21版本后,luci用js替换了lua写后台,先找一些代码路径 在openrwt15这部分代码是在这个目录下 feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm 里面包含…...

HarmonyOS ArkTS 骨架屏加载显示(二十五)

目录 前言1、骨架屏代码显示2、代码中引用3、效果图展示 前言 所谓骨架屏,就是在页面进行耗时加载时,先展示的等待 UI, 以告知用户程序目前正在运行,稍等即可。 等待的UI大部分是 loading 转圈的弹窗,有的是自己风格的小动画。其实…...

Ruoyi-Cloud-Plus_使用Docker部署分布式微服务系统_环境准备_001---SpringCloud工作笔记200

1.首先安装docker: 如果以前安装过首先执行: yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine 去卸载docker 2.安装dokcer需要的工具包…...

RN封装的底部向上弹出的弹出层组件

组件代码 import React from react; import { View, StyleSheet, Modal, TouchableOpacity, Text, TouchableWithoutFeedback } from react-native;const BottomPopup ({ visible, onClose, children, leftButtonTitle, rightButtonTitle, onLeftButtonPress, onRightButtonP…...

基于深度学习YOLOv8+PyQt5的水底海底垃圾生物探测器检测识别系统(源码+数据集+配置说明)

wx供重浩:创享日记 对话框发送:323海底 获取完整源码7000张数据集配置说明文件说明远程操作配置环境跑通程序 效果展示 基于深度学习YOLOv8PyQt5的水底海底垃圾生物探测器检测识别系统设计(源码数据集配置文件) 各文件说明 程序运…...

SpringBoot集成WebSocket实现简单的多人聊天室

上代码—gitee下载地址: https://gitee.com/bestwater/Spring-websocket.git下载代码,连上数据库执行SQL,就可以运行,最终效果...

如何使用固定公网地址远程访问内网Axure RP生成的网站原型web页面

文章目录 前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4.2 启动website隧道4.3 获取公网URL地址4.4. 公网远程访问内网web站点4.5 配置固定二级子域名公网访问内网web站点4.5.1创建一条固定…...

蓝桥杯习题

https://www.lanqiao.cn/problems/1265/learning/ 第一题---排序 给定一个长度为N的数组A,请你先从小到大输出它的每个元素,再从大到小输出他的每个元素。 输入描述: 第一行包含一个整数N 第二行包含N个整数a1,a2,a3,...an,表…...

AMS概念以及面试相关整理

1、ActivityManagerService是什么?什么时候初始化的?有什么作用? ActivityManagerService(AMS)是什么? ActivityManagerService(简称AMS)是Android操作系统中的一个核心服务&#…...

Vmware下减小Ubuntu系统占用系统盘大小

1、虚拟机设置下占用空间 如图,给虚拟机分配了120GB,已经占用116.9GB,开机会提示空间不足。 2、实际使用空间 ubuntu系统下使用“df -h”命令查看实际使用空间大小50GB左右 造成这个原因是,虚拟机的bug:在虚拟机的ub…...

面试题-Elasticsearch集群架构和调优手段(超全面)

对于Elasticsearch(ES),我了解并有经验。在我之前的公司,我们有一个相对大型的ES集群,以下是该集群的架构和一些调优手段的概述: 1. 集群架构 集群规模:我们的ES集群由15个节点组成&#xff0c…...

python基础练习题6

1、找出10000以内能被5或6整除,但不能被两者同时整除的数(函数) def find_numbers(m,n):result []for num in range(m,n):if (num % 5 0 or num % 6 0) and not (num % 5 0 and num % 6 0):result.append(num)return resultprint(find_…...

用MobaXterm替代传统终端的完整指南

Windows远程运维革命:用MobaXterm替代传统终端的完整指南 每次打开 PuTTY 时,你是否会对着那个灰暗的界面叹气?当需要在Xshell中频繁切换标签时,是否感到效率低下?作为Windows系统管理员或开发者,我们长期忍…...

基于双层规划模型的微网新能源经济消纳共享储能优化配置:MATLAB代码复现及详细解读

(文章复现)考虑微网新能源经济消纳的共享储能优化配置matlab代码 参考资料《考虑微网新能源经济消纳的共享储能优化配置》 提出了考虑新能源消纳的共享储能电站容量功率配置方法,针对储能电站投运成本最低与微能源网运行经济性最优的多目标,建立了双层规…...

别再手动对齐了!Excel双坐标折线图保姆级教程,5分钟搞定销售与成本对比分析

Excel双坐标折线图实战:销售与成本可视化分析的进阶技巧 当市场专员小林第一次尝试将季度销售额(单位:万元)和成本率(单位:百分比)放在同一张图表时,她发现了一个尴尬的现象——代表…...

在 React 中,useRef、ref 属性以及 forwardRef 是处理“引用”(访问 DOM 节点或组件实例)的核心概念

在 React 中,useRef、ref 属性以及 forwardRef 是处理“引用”(访问 DOM 节点或组件实例)的核心概念。它们经常一起使用,但职责完全不同。以下是它们的核心区别、使用方法及组合示例:1. 核心概念与区别特性ref (属性)u…...

F_Record:让Photoshop绘画过程录制变得简单高效的轻量级插件

F_Record:让Photoshop绘画过程录制变得简单高效的轻量级插件 【免费下载链接】F_Record 一款用来录制绘画过程的轻量级PS插件 项目地址: https://gitcode.com/gh_mirrors/fr/F_Record 在数字艺术创作领域,每一笔笔触都承载着创作者的灵感与思考。…...

新手零基础入门:借助快马AI生成你的第一个班级宠物园网页应用

作为一个刚接触编程的新手,想要快速上手开发一个班级宠物园网页应用,确实会遇到不少挑战。不过现在有了InsCode(快马)平台这样的工具,整个过程变得简单多了。下面我就分享一下自己从零开始构建这个项目的经验,希望能帮助到同样想入…...

TranslucentTB:轻量任务栏视觉增强工具,让Windows桌面颜值提升300%

TranslucentTB:轻量任务栏视觉增强工具,让Windows桌面颜值提升300% 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB …...

AI原生应用:解决幻觉难题的有效途径

AI原生应用:解决幻觉难题的有效途径 关键词:AI原生应用、大模型幻觉、检索增强生成(RAG)、验证模块、智能系统架构 摘要:大语言模型(LLM)的“幻觉”(Hallucination)问题——生成与事实不符的内容,正成为AI应用落地的最大障碍。本文将从“AI原生应用”的视角出发,用通…...

汽车智能制造时代,哪些服务商助力智慧供应链?

一辆汽车的诞生,背后是一场精密到分钟的大合唱。当生产线以每小时数十台的速度流转时,任何一个零部件的迟到,都可能导致整条线停摆。一个汽车工厂里,单一产线同时生产多种车型,涉及数以万计的SKU零部件。这些物料必须从…...

软件检测领域CNAS能力验证信息怎么查?今年有哪些软件检测领域可以参加的能力验证?

实验室在初次申请CNAS资质或者扩项时,必须要参加一次能力验证活动,并获得满意结果。对于初次申请CNAS资质的软件检测实验室,能力验证应该在质量管理体系试运行期间完成。如果时间不合适,也可以选择参加测量审核活动。测量审核活动…...