用一个程序解决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,一经查实,立即删除!

相关文章

kali常用命令功能简介记录

Kali Linux中常用的命令: 1. apt-get update:更新软件源列表。 2. apt-get upgrade:升级系统中已安装的软件包。 3. apt-get install [软件包]:安装指定的软件包。 4. apt-get remove [软件包]:卸载指定的软件包。 5.…

上海开放大学2024春《机械工程导论》简答题参考答案

答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 机械工程导论 - 简答题 一共五个题: 1. 材料力学…

301.【华为OD机试】最小传输时延I(Dijkstra 算法—JavaPythonC++JS实现)

本文收录于专栏:算法之翼 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解代码C/C++题解代码JS题解代码四.代码讲解(Ja…

基于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.内容不涉及广告 在发布笔记前要先确保笔记内容不包含任何形式的广告或推广信息。小红书平台对于广告性质的内容有…

资治通鉴读后感之【顺应人性、联盟、创业切入点、领袖魅力】

目录 顺应人性: 联盟: 防蚁穴: 创业者切入点: 组建团队: 顺应人性: 不着急、不害怕、不要脸的精神 兴衰、人性、道德、权谋 优秀的人才:愿和你交流的时候,多交流,…

【React】在React中如何渲染空格

前言 代码中冒号是英文冒号&#xff0c;以便显示空格是否渲染 方式一&#xff1a;使用花括号 function Message () {return (<p>姓名:{" "}张三</p>) }方式二&#xff1a;使用Html实体 function Message () {return (<p>姓名: 张三</p>)…

题目:练习函数调用

题目&#xff1a;练习函数调用 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should leave quickly…

Day41 动态规划 part03

Day41 动态规划 part03 343. 整数拆分 我的思路&#xff1a; 自己写不了一点… 拿代码debug&#xff0c;dp数组&#xff0c;表示正整数n的最大拆分乘积&#xff0c;当n 2的时候才能拆分&#xff08;2 1 1&#xff09;&#xff0c;且dp[2] 1 我们用 i 遍历&#xff0c;记录…

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…

11.最多约数

问题描述 对于以下这些数(6 行&#xff0c;每行6个&#xff0c;共36个)&#xff0c;请问约数数最多的是哪个?(如果有多个&#xff0c;请回答出现最早的那个) 393353 901440 123481 850930 423154 240461 373746 232926 396677 486579 744860 468782 941389 777714 992588 3432…

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…

winget安装提示:执行此命令时发生意外错误: InternetOpenUrl() failed. 0x80072efd

当我们在使用Windows下的包管理器安装软件时&#xff0c;有时候安装软件时会提示以下错误 执行此命令时发生意外错误&#xff1a; InternetOpenUrl() failed. 0x80072efd : unknown error解决方法&#xff1a; DNS是一种将网址转化为IP地址的重要工具。如果你的电脑无法访问Git…

【学习笔记】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 …