文章说明:
本篇文章是在之前的一篇文章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例