MySQL数据表stu_info结构
属性名 | 数据类型 | 可否为空 | 含 义 |
id | int | NO | 序号(自动增长,主键) |
sid | varchar(50) | NO | 学号 |
name | varchar(100) | NO | 姓名 |
age | int | NO | 年龄 |
classes | varchar(100) | NO | 班级 |
score | int | NO | 成绩 |
建表语句:
#在stu1的数据库中创建 学生信息表stu_info
create table stu_info(
id INT PRIMARY KEY AUTO_INCREMENT,
sid varchar(50) not null,
name varchar(100) not null,
age int not null,
classes varchar(100) not null,
score int not null
);
插入数据:
# 在stu_info中插入一条数据
insert into stu_info values(null ,'0001','张三',18,'Python',99);
insert into stu_info(sid,name,age,classes,score) values('0002','李四',19,'java',99);
insert into stu_info values(null,'0003','ruhua','17','Python','99');
两个.py文件均位于stu_sys目录下
ru_stu_main.py
# 整个项目的主模块,主要负责整个项目的业务逻辑的调用和分配,增删改查的调用
# 数据库版的学生信息管理系统:增删改查
# rt_stu_main:整个项目的主模块,主要负责整个项目的业务逻辑的调用和分配,增删改查的调用
# rt_stu_util:整个项目的工具模块,封装了增删改查的主要功能,以及数据库的相关封装
import stu_sys.rt_stu_util as util
print("*" * 50)
print("欢迎来到学生信息管理系统【v 4.0】")
# 开启while循环提示用户
while (True):
util.show_menu()
action_str = input("请输入您要执行的操作编号:")
if action_str in ["1", "2", "3", "4", "5"]:
if action_str == "1":
util.find_all()
elif action_str == "2":
util.insert_info()
elif action_str == "3":
util.delete_info()
elif action_str == "4":
util.update_info()
elif action_str == "5":
util.find_info_by_sid()
elif action_str == "0":
print("欢迎下次使用学生信息管理系统,good bye!")
break
else:
print("您的输入有误!请重新输入")
rt_stu_util.py
# rt_stu_util:整个项目的工具模块,封装了增删改查的主要功能,以及数据库的相关封装
# rt_stu_util:整个项目的工具模块,封装了增删改查的主要功能,以及数据库的相关封装
import pymysql
def get_conn():
# 获取数据库连接
conn = pymysql.connect(
host="localhost", port=3306,
user="root", password="root",
database="test", charset="utf8"
)
cursor = conn.cursor()
return conn, cursor
def close(conn, cursor):
# 释放资源
conn.close()
cursor.close()
def show_menu():
"""封装了功能菜单"""
print("*" * 50)
print("请选择您要执行的操作:")
print("")
print("1.查询所有学生信息")
print("2.添加学生信息")
print("3.删除学生信息")
print("4.修改学生信息")
print("5.查询某一位学生信息")
print("")
print("0.退出当前学生信息系统")
print("*" * 50)
def find_all():
# 查询所有
# 获取数据库连接和cursor
conn, cursor = get_conn()
# 执行查询操作
sql = "select * from stu_info"
count = cursor.execute(sql)
print(f"查询到了{count}条数据:")
# 表头
print("#" * 50)
for title in ["学号", "姓名", "年龄", "班级", "成绩"]:
print(title, end="\t\t")
print("")
# 详细信息
result = cursor.fetchall()
for item in result:
print(item[1] + "\t" + item[2] + "\t\t" + str(item[3]) + "\t\t" + item[4] + "\t\t" + item[5])
print("#" * 50)
print("查询完毕!")
# 释放资源
close(conn, cursor)
def find_all1():
conn, cursor = get_conn()
# 执行查询操作
sql = "select * from stu_info"
count = cursor.execute(sql)
result = cursor.fetchall()
# 释放资源
close(conn, cursor)
return result, count
def insert_info():
# 添加信息
# 获取数据库连接和cursor
conn, cursor = get_conn()
# 键盘录入要添加的内容
sid = input("请输入要添加的sid:")
# 根据sid判断学生是否已存在,如果存在就不能重复添加相同的sid信息
result, count = find_all1()
for item in result:
if sid == item[1]:
# 已经存在
print(f"您要添加的学生[{sid}]信息已存在,请核实!")
break
else:
# 不存在
name = input("请输入要添加的name:")
age = input("请输入要添加的age:")
classes = input("请输入要添加的classes:")
score = input("请输入要添加的score:")
# 执行添加操作
sql = "insert into stu_info values(null,%s,%s,%s,%s,%s)"
count = cursor.execute(sql, [sid, name, age, classes, score])
if count > 0:
print("添加成功")
else:
print("添加失败")
# 提交事务(数据库操作时,数据表中数据发生变化时,需要提交事务)
conn.commit()
# 释放资源
close(conn, cursor)
def delete_info():
# 删除信息
sid = input("请输入您要删除信息的sid:")
result = find_all1()[0]
for item in result:
if sid == item[1]:
# 存在sid,直接删除
# 获取数据库连接和cursor
conn, cursor = get_conn()
# 执行删除操作
sql = "delete from stu_info where sid = %s"
count = cursor.execute(sql, [sid])
# 提交事务
conn.commit()
if count > 0:
print(f"sid为{sid}的学生信息删除成功")
else:
print(f"sid为{sid}的学生信息删除失败")
# 释放资源
close(conn, cursor)
break
else:
print(f"不存在您要删除的学号为[{sid}]的学生信息,请核实!")
def update_info():
# 修改信息
sid = input("请输入您要修改信息的sid:")
result = find_all1()[0]
for item in result:
if sid == item[1]:
# 存在,直接进行修改
# 获取数据库连接和cursor
conn, cursor = get_conn()
# 执行更新操作
name = input("请输入修改后的name:")
age = input("请输入修改后的age:")
classes = input("请输入修改后的classes:")
score = input("请输入修改后的score:")
sql = "update stu_info set name=%s, age=%s, classes=%s, score=%s where sid=%s"
count = cursor.execute(sql, [name, age, classes, score, sid])
# 提交事务
conn.commit()
if count > 0:
print(f"sid为{sid}的学生信息修改成功")
else:
print(f"sid为{sid}的学生信息修改失败")
# 释放资源
close(conn, cursor)
break
else:
print(f"不存在您要修改的学号为[{sid}]的学生信息,请核实!")
def find_info_by_sid():
# 查询某一个
result = find_all1()[0]
sid = input("请输入您要查询学生信息的sid:")
for item in result:
if sid == item[1]:
# 获取数据库连接和cursor
conn, cursor = get_conn()
# 执行查询操作
sql = "select * from stu_info where sid = %s"
count = cursor.execute(sql, [sid])
# 表头
print("#" * 50)
for title in ["学号", "姓名", "年龄", "班级", "成绩"]:
print(title, end="\t\t")
print("")
# 详细信息
print(item[1] + "\t" + item[2] + "\t\t" + str(item[3]) + "\t\t" + item[4] + "\t\t" + item[5])
print("#" * 50)
print("查询完毕!")
# 释放资源
close(conn, cursor)
break
else:
print(f"不存在您要查询的学号为[{sid}]的学生信息,请核实!")