用一个程序解决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':
            break
        else:
            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例

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Upload file to cloud server

Procedure is trifle,concentrate on current affair. Via js step1: book a website Official guidebook https://support.huaweicloud.com/usermanual-cloudsite/cloudsite_01_4140.html 流程如下: 为什么这么难,死活不知道怎么备案 /(ㄒoㄒ)/~~

Linux:数据链路层

文章目录 路由表数据链路层分片mac帧报头ARP协议ARP的周边话题 路由表 当主机a想要发送消息到主机b,这一整个过程中,数据报文在进行传输的过程实际上是一跳一跳的过去的,而报文可能会经过公网进行传递,本质上这些网络都是靠对应的…

使用vue开发的前后台框架推荐

对于Vue后台前台框架,以下是几个值得推荐的选项: Element UI:一个基于Vue.js的桌面端组件库,提供了丰富的UI组件和交互方式,非常适合构建后台管理系统。 Element UI是一套为开发者、设计师和产品经理准备的基于Vue 2.…

【计算机毕业设计】五台山景点购票系统,后附源码

🎉**欢迎来到琛哥的技术世界!**🎉 📘 博主小档案: 琛哥,一名来自世界500强的资深程序猿,毕业于国内知名985高校。 🔧 技术专长: 琛哥在深度学习任务中展现出卓越的能力&a…

LeetCode-热题100:118. 杨辉三角

题目描述 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: [[1]]…

什么是SYN攻击,有什么办法防御SYN攻击

自进入数字化互联网时代,网络技术给我们带来了许多服务,为人们的生活增添了许多便利。但同时,网络安全问题也日益凸显,其中DDoS攻击,即分布式拒绝服务攻击,已经成为一种常见的网络威胁。这种攻击方式通过控…

anaconda虚拟环境安装apex0.1教程win10

我安装apex0.1的环境是:torch(gpu)1.8.0,cuda10.2,cuda7.6.5。 第一步:下载对应的pytorch、cuda、cudnn版本 这里就不详细介绍了,具体可以参考我的这篇博文win10中anaconda创建虚拟环境配置py…

「 典型安全漏洞系列 」10.跨域资源共享CORS漏洞详解

跨域资源共享(Cross-origin Resource Sharing,CORS)是一种浏览器机制,可以对于给定域之外的资源进行受控访问。它扩展并增加了同源政策(Same-origin Policy,SOP)的灵活性。然而,如果…

知识融合与消歧:完善知识图谱的关键步骤

知识融合与消歧:完善知识图谱的关键步骤 一、引言:知识融合与消歧的重要性 在今天的数据驱动时代,知识图谱已成为组织和理解海量信息的关键技术。它们使得复杂的数据关系可视化,为人工智能提供了丰富的知识基础。然而&#xff0c…

Qt | 元对象系统

一、QByteArray 类简介 1、QByteArray 类简介  该类是一个用于处理字符串的类似于 C++的 string 类型的类,在 Qt 中,对字符串的处理,经常使用的是 QString 类,该类保证字符串以\0结尾,并使用隐式共享(copy-on-write)来减少内存用量和不必要的数据复制。  QByteArra…

【智能算法】原子搜索算法(ASO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2019年,Zhao等人受到原子运动规律启发,提出了原子搜索算法(Atom Search Algorithm,ASO)。 2.算法原理 2.1算法思想 ASO根据分子动力学中…

Qt学习记录(C++)——Day 2

目录 一、作业 要求: 实现: 1.创建新的窗口类 2. 主窗口中实现 二、 窗口菜单设计 效果展示图 三、图片资源的导入 步骤: 举例: 四、 对话框 1.模拟对话框 2. 非模态对话框 3.错误对话框 4.信息对话框 5.提问对话…

【C++】缺省参数和函数重载

目录 1.缺省参数 1.1缺省参数的定义 1.2 缺省参数的简单应用 1.3 缺省参数分类:全缺省参数和半缺省参数 1.3.1半缺省参数 1.3.2全缺省参数 3.缺省参数注意事项:缺省参数不能在函数声明和定义中同时出现 4.函数重载 4.1 函数重载概念 4.2 函数参数类型…

matlab使用教程(35)—求解时滞微分方程(3)

1中立型 DDE 以下示例说明如何使用 ddensd 求解中立型 DDE(时滞微分方程),其中时滞出现在导数项中。此问题最初由 Paul [1] 提出。方程是: 由于该方程在 y ′ 项中存在时滞,因此该方程称为中立型 DDE。如果时滞仅出现…

基于SSM的基于个人需求和地域特色的外卖推荐系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的基于个人需求和地域特色的外卖推荐系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

10 - 三态门和寄存器

1. 三态门 1.1 引入背景 现在我们需要封装一个单字节存储器。 Clear 清零,Pre 置 1,CP 的上升沿将输入 DI 数据写入。 问题:总线冲突。如果将多个存储器连到一起,就会出现一个输入连到多个输出发生数据冲突的问题。 需要三态门…

【单片机家电产品学习记录--红外线】

单片机家电产品学习记录–红外线 红外手势驱动电路,(手势控制的LED灯) 原理 通过红外线对管,IC搭建的电路,实现灯模式转换。 手势控制灯模式转换,详细说明 转载 1《三色调光LED台灯电路》&#xff0c…

计数排序解读

当我们提及排序算法时,通常会想到冒泡排序、选择排序、插入排序、归并排序和快速排序等经典算法。然而,今天我们要探讨的是一种非比较型整数排序算法——计数排序。计数排序在某些特定场景下表现出色,具有线性的时间复杂度。下面我们将深度剖…

SYS-2722音频分析仪SYS2722

181/2461/8938产品概述: Audio Precision 2722 音频分析仪是 Audio Precision 屡获殊荣的 PC 控制音频分析仪的旗舰型号,长期以来一直是音频设备设计和测试的全球公认标准。功能齐全的 SYS-2722 提供了测试转换器技术最新进展所需的无与伦比的失真和噪声…

NoSQL概述

NoSQL概述 目录 一、为什么用NoSQL 二、什么是NoSQL 三、经典应用分析 四、N o S Q L 数 据 模 型 简 介 五、NoSQL四大分类 六、CAP BASE 一、为什么用NoSQL 1、单机MySQL的美好年代 在90年代,一个网站的访问量一般不大,用单个数据库完全可以轻松应…