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

相关推荐
SEEONTIME4 分钟前
python-24-一篇文章彻底掌握Python HTTP库Requests
开发语言·python·http·http库requests
Bearnaise4 分钟前
PointMamba: A Simple State Space Model for Point Cloud Analysis——点云论文阅读(10)
论文阅读·笔记·python·深度学习·机器学习·计算机视觉·3d
gavin_gxh6 分钟前
ORACLE 删除archivelog日志
数据库·oracle
一叶飘零_sweeeet9 分钟前
MongoDB 基础与应用
数据库·mongodb
猿小喵25 分钟前
DBA之路,始于足下
数据库·dba
tyler_download34 分钟前
golang 实现比特币内核:实现基于椭圆曲线的数字签名和验证
开发语言·数据库·golang
哇咔咔哇咔35 分钟前
【科普】conda、virtualenv, venv分别是什么?它们之间有什么区别?
python·conda·virtualenv
CSXB991 小时前
三十四、Python基础语法(文件操作-上)
开发语言·python·功能测试·测试工具
weixin_449310841 小时前
高效集成:聚水潭采购数据同步到MySQL
android·数据库·mysql
亚图跨际2 小时前
MATLAB和Python及R潜变量模型和降维
python·matlab·r语言·生物学·潜变量模型