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