用一个程序解决SQLite常见的各项操作(实用篇)

文章说明:

本篇文章是在之前的一篇文章SQLite3进行数据库各项常用操作基础上写的,将SQLite涉及到的常用的几种操作,以函数的形式处理成相互调用的形式。

在这里插入图片描述

因为之前的文章对基础操作已经解释过了,所以这里直接放置可执行代码和结果。

可执行代码展示

本程序的实现内容:

该代码是一个简易的用户信息管理系统,实现了对SQLite数据库中“person”表的基本操作。

具体功能包括:测试数据库连接、创建或确认“person”数据表的存在、向“person”表中增加用户信息、删除指定用户名的记录、以及显示“person”表中所有记录的功能。

用户可以通过终端菜单选择执行的操作,例如添加新的用户信息、删除某个特定的用户信息或者列出所有用户信息。

注意:所有对数据库的操作如添加、删除记录都会立即提交,确保数据的一致性与准确性。可以认为这是一个通过命令行交互,实现用户信息增删查的简单应用程序。

import sqlite3# 测试连接数据库
def connect_db():# 连接数据库,参数指定数据库文件路径conn = sqlite3.connect(path_data)print('\n已连接上数据库...')# 随时关闭数据库连接conn.close()# 执行SQL语句
def run_sql(sql):# 打开连接with sqlite3.connect(path_data) as conn:# 生成一个cursor对象curs = conn.cursor()# 执行SQL语句curs.execute(sql)# 事务提交conn.commit()# 返回插入或删除时,影响到的记录数,以此判断插入和删除是否成功return curs.rowcount# 在数据库建一个数据表person
def create_table():# 建表语句vsql = '''CREATE TABLE IF NOT EXISTS person(ID INTEGER PRIMARY KEY  AUTOINCREMENT,name varchar2(10),sex char(2),age int,department varchar2(20),telephone varchar2(11),bz varchar(20)
);'''# 调用函数执行SQL语句run_sql(vsql)print('\n用户信息表新建成功!')# 采集用户信息
def person_info():vname = input("请录入姓名:")vsex = input('请录入性别:')vage = input('请录入年龄:')vdepartment = input('请录入单位:')vtelephone = input('请录入电话号码:')vbz = input('请录入备注说明:')# 组合成SQL语句vsql = 'insert into person(name,sex,age,department,telephone,bz) values("' \+ vname + '","' + vsex + '",' + vage + ',"' + vdepartment + '","' \+ vtelephone + '","' + vbz + '")'print(vsql)# 返回SQL语句return vsql# 增加一条记录
def add_row():# 取得SQL语句vsql = person_info()# 调用函数执行SQL语句,并取得返回值vcount = run_sql(vsql)# 如果返回值等于1,说明插入一条记录if vcount == 1:print('\n人员信息增加成功!')else:print('\n人员信息增加失败!')# 删除一条记录
def del_row():vname = input("请录入要删除的人员姓名:")# 按照姓名条件,删除一条记录vsql = 'delete from person where name="' + vname + '"'print(vsql)# 调用函数执行SQL语句,并取得返回值vcount = run_sql(vsql)# 如果返回值等于1,说明删除了一条记录if vcount == 1:print('\n人员信息删除成功!')else:print('\n人员信息删除失败!')# 显示数据表中的所有记录
def list():vsql = 'select * from person'with sqlite3.connect(path_data) as conn:curs = conn.cursor()curs.execute(vsql)ret = curs.fetchall()# 在终端上打印相关信息print('\n人员信息列表如下:')print('序号       姓名     性别      年龄    单位                    电话号码                  备注')print('-' * 90)for item in ret:print(str(item[0]).ljust(10), end='')print(item[1].ljust(9), end='')print(item[2].ljust(8), end='')print(str(item[3]).ljust(6), end='')print(item[4].ljust(20), end='')print(item[5].ljust(20), end='')print(item[6].ljust(20))print('\n')# 主程序main
if __name__ == '__main__':path_data="data.db"# 给变量赋值提示信息v_menu = '''1、连接数据库2、构建一个用户信息表(person)3、向用户信息表中增加记录4、删除一条记录5、显示用户信息q、退出程序'''while True:# 列出菜单供用户选择print(v_menu)# 接受用户的选择v_choose = input('请选择相应的操作(1-5):')if v_choose == '1':# 连接数据库测试connect_db()elif v_choose == '2':# 生成一个数据表create_table()elif v_choose == '3':# 向数据表中加一条记录add_row()elif v_choose == '4':# 删除一条记录del_row()elif v_choose == '5':# 列举出数据表中的所有记录list()elif v_choose == 'q':breakelse:break

执行结果展示

下面的内容是根据提示,从1到5到q的输入和输出过程:

    1、连接数据库2、构建一个用户信息表(person)3、向用户信息表中增加记录4、删除一条记录5、显示用户信息q、退出程序请选择相应的操作(1-5):1已连接上数据库...1、连接数据库2、构建一个用户信息表(person)3、向用户信息表中增加记录4、删除一条记录5、显示用户信息q、退出程序请选择相应的操作(1-5):2用户信息表新建成功!1、连接数据库2、构建一个用户信息表(person)3、向用户信息表中增加记录4、删除一条记录5、显示用户信息q、退出程序请选择相应的操作(1-5):3
请录入姓名:张张
请录入性别:男
请录入年龄:18
请录入单位:研究所所
请录入电话号码:123456789
请录入备注说明:爱学习
insert into person(name,sex,age,department,telephone,bz) values("张张","男",18,"研究所所","123456789","爱学习")人员信息增加成功!1、连接数据库2、构建一个用户信息表(person)3、向用户信息表中增加记录4、删除一条记录5、显示用户信息q、退出程序请选择相应的操作(1-5):5人员信息列表如下:
序号       姓名     性别      年龄    单位                    电话号码                  备注
------------------------------------------------------------------------------------------
2         张小       男       18    信息中心                13562819***         一个程序员               
3         刘小       女       50    经营管理部               13562819***         成本管理员               
4         李三       男       44    办公室                 13562819***         秘书                  
5         李四       男       22    办公室                 13562819***         行政管理员               
6         李明       男       18    保安部                 13562819123         新员工                 
8         李四       女       22    保安部                 13562819456         新员工                 
9         李明       男       18    保安部                 13562819123         新员工                               
10       张张       男       18    研究所所                123456789           爱学习                 1、连接数据库2、构建一个用户信息表(person)3、向用户信息表中增加记录4、删除一条记录5、显示用户信息q、退出程序请选择相应的操作(1-5):q

参考python编程100例

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

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

相关文章

基于YOLOv8的绝缘子检测系统

💡💡💡本文摘要:基于YOLOv8的绝缘子小目标检测,阐述了整个数据制作和训练可视化过程 1.YOLOv8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的&a…

kali Linux上安装docker过程记录

安装情况: 直接安装提示错误!!! 安装程序命令: apt install -y docker.io 安装结果提示安装失败!!!看别人安装直接成功到我这怎么失败!!!找原因…

引用,内联函数,auto函数,指针nullptr

一:引用 1.1 该文章的引用是对上一篇引用的进行补充和完善 按理来说,double可以隐式转换为int,那起别名的时候为什么不可以类型转换呢? 那是因为,在类型转换的时候,会创建一个临时变量,让后再…

如何提高小红书笔记的收录率?

在小红书平台上,笔记的收录率是衡量一篇笔记是否受欢迎和有价值的重要因素。为了提高笔记的收录率,有几个关键点需要注意: 1.内容不涉及广告 在发布笔记前要先确保笔记内容不包含任何形式的广告或推广信息。小红书平台对于广告性质的内容有…

24年大一训练一(东北林业大学)

前言&#xff1a; 周五晚上的训练赛&#xff0c;以后应该每两周都会有一次。 正文&#xff1a; Problem:A矩阵翻转&#xff1a; #include<bits/stdc.h> using namespace std; int a[55][55]; int main(){int n,m;while(cin>>n>>m){for(int i1;i<n;i){for…

Mysql数据库:故障分析与配置优化

目录 前言 一、Mysql逻辑架构图 二、Mysql单实例常见故障 1、无法通过套接字连接到本地MySQL服务器 2、用户rootlocalhost访问被拒绝 3、远程连接数据库时连接很慢 4、无法打开以MYI结尾的索引文件 5、超出最大连接错误数量限制 6、连接过多 7、配置文件/etc/my.cnf权…

PDF转成二维码分享

在制作电子产品册之前&#xff0c;你需要思考以下几个问题&#xff1a;你的电子产品册是面向什么人群的&#xff1f;是宣传册、使用手册还是产品介绍册&#xff1f;明确目标与定位有助于我们更好地规划产品册的内容和风格。 一、收集素材与整理信息 在开始制作之前&#xff0c…

latex学习笔记

一 安装latex&#xff08;vscodetexlive&#xff09; 安装latex学习链接&#xff1a; 【超详细】最好用LaTex环境安装配置手把手教学&#xff01;&#xff01;&#xff08;支持双向搜索&#xff0c;附赠所需安装包及竞赛模板&#xff09;_哔哩哔哩_bilibilihttps://www.bilib…

KeepAlived使用介绍

目录 1、Introduce 2、基本使用 &#xff08;1&#xff09;安装 &#xff08;2&#xff09;配置文件 &#xff08;3&#xff09;使用教程 1、Introduce keepalived是一个用于实现高可用性和负载均衡的开源软件。它提供了一种轻量级的方式来管理多个服务器&#xff0c;并确保…

高效解决Ubuntu Server 18.04.1 LTS 64bit更新gdb8.1.1到gdb12.1

文章目录 问题解决步骤 问题 因为需要用到gdb一些指令&#xff0c;但是gdb8.x好像存在普遍的问题&#xff0c;实现不了某些指令&#xff0c;比方说set detach-on-fork on&#xff0c;升级版本也没有比较好的教程 经过我不断的试错&#xff0c;我终于升级成功了&#xff01;&a…

【学习笔记】java项目—苍穹外卖day02

文章目录 苍穹外卖-day02课程内容1. 新增员工1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计1.1.3 表设计 1.2 代码开发1.2.1 设计DTO类1.2.2 Controller层1.2.3 Service层接口1.2.4 Service层实现类1.2.5 Mapper层 1.3 功能测试1.3.1 接口文档测试1.3.2 前后端联调测试 1.4 …

[C++11]可变参数模板

导览&#xff1a; 本章将从可变参数模板的概念开始讲起&#xff0c;到其究竟是如何做到实例化的再从实例出发&#xff0c;探究该如何编写可变参数模板最后涉及可变参数模板的运用 什么是可变参数模板 让我们先见一下可变参数模板 template<typename ...Args> void te…

【SpringCloud】一文详谈Nacos

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 …

Linux之用户账号、用户组和与账号有关的系统文件

目录 一、基本介绍 1.用户和用户组 2.UID和GID 二、 账户管理 1.查看用户的UID和GID 2.添加账户 3.删除账号 4.修改账号 5.账户口令 三、分组管理 1.新增用户组 2.删除用户组 3.修改用户组 4.用户组切换 四、与账号有关的系统文件 1./etc/passwd 2./etc/shado…

李宏毅深度强化学习导论——当奖励是稀疏的

引言 这是李宏毅强化学习的笔记&#xff0c;主要介绍如何处理稀疏奖励问题。 稀疏奖励 当我们拿Actor和环境互动后可以得到很多奖励&#xff0c;整理之后可以得到分数 A A A&#xff0c;然后可以训练Actor。 但RL中有时会出现多数情况下奖励为零&#xff0c;此时我们不知道动…

行存储与列存储:大数据存储方案的选择与优缺点分析

随着大数据时代的来临&#xff0c;数据的规模和复杂性呈指数级增长&#xff0c;传统的关系数据库已经不再适应这一巨大的存储量和计算要求。在大数据存储领域&#xff0c;行存储和列存储成为两种备受关注的存储方案。本文将探讨行存储和列存储的定义、优缺点&#xff0c;并结合…

第十四届省赛大学B组(C/C++)岛屿个数

目录 题目链接&#xff1a;岛屿个数 解题思路&#xff1a; AC代码&#xff08;BFSDFS&#xff09;&#xff1a; 题目链接&#xff1a;岛屿个数 小蓝得到了一副大小为 MN 的格子地图&#xff0c;可以将其视作一个只包含字符 0&#xff08;代表海水&#xff09;和 1&#xff0…

LeetCode-331. 验证二叉树的前序序列化【栈 树 字符串 二叉树】

LeetCode-331. 验证二叉树的前序序列化【栈 树 字符串 二叉树】 题目描述&#xff1a;解题思路一&#xff1a;看提示主要是栈和树。这题其实不是二叉树的遍历题&#xff0c;而是检验二叉树基础知识的题&#xff0c;也许有些难想。第一种解法是&#xff1a;把有效的叶子节点使用…

【DETR系列目标检测算法代码精讲】01 DETR算法03 Dataloader代码精讲

与一般的Dataloader的区别在于我们对图像进行了随机裁剪&#xff0c;需要进行额外的操作才能将其打包到dataloader里面 这一段的代码如下&#xff1a; if args.distributed:sampler_train DistributedSampler(dataset_train)sampler_val DistributedSampler(dataset_val, shu…

Python 自学(九) 之异常处理,文件及目录操作

目录 1. try ... except ... else ... finally 排列 P231 2. write, read, seek, readline, readlines 基本文件操作 P245 3. os模块 基本目录操作 P249 4. os.path 模块 复杂目录操作 P250 5. os 模块 高…