python 数据库操作

  • 操作数据库时,首先应把数据库打开,连接上;
  • 如果数据库不是随电脑开机自动运行的话,可以用管理员身份运行cmd,输入 net start mysql 启动运行mysql;然后在MySQL 5.5 Command Line Client中输入密码就可以对数据库进行操作了;
  • 操作完了可以在cmd中,输入 net stop mysql 停止运行mysql。
  • 目录
    • python 数据库 代码
    • 启动运行mysql(这一步应在运行代码之前执行)
    • MySQL 5.5 Command Line Client 位置

python 数据库 代码

  • main.py
import db_connect as d


def main():
    while True:
        menu()
        choice = int(input('请选择:'))
        if choice in [0, 1, 2, 3, 4]:
            if choice == 0:
               answer = input('您确定要退出系统吗?y/n\n')
               if answer == 'y' or answer == 'Y':
                   d.db.close()
                   print('谢谢您的使用!!!')
                   break
               else:
                   continue
            elif choice == 1:
                d.insert()  # 增加学生信息
            elif choice == 2:
                d.search()  # 查找学生信息
            elif choice == 3:
                d.delete()  # 删除学生信息
            elif choice == 4:
                d.modify()  # 修改学生信息


def menu():
    print('======================学生信息数据库操作=======================')
    print('----------------------功能菜单-----------------------')
    print('\t\t\t\t1.增加学生信息')
    print('\t\t\t\t2.查找学生信息')
    print('\t\t\t\t3.删除学生信息')
    print('\t\t\t\t4.修改学生信息')
    print('\t\t\t\t0.退出系统')
    print('--------------------------------------------------------')


if __name__ == '__main__':
    main()

  • db_connect.py
import pymysql
db = pymysql.connect("localhost", "root", '111111', "student")
# db = pymysql.connect("连接数据库名", "用户名", '密码', "数据库表")

# 插入数据
def insert():
    cursor = db.cursor()  # 创建一个游标对象 cursor

    while True:
        try:
            name = input('请输入学生名字:')
            grade = input('请输入学生班级:')
            age = int(input('请输入学生年龄:'))
            id = input('请输入学生学号:')
            sql = 'insert into mstudent(name, banji, age, xuehao) values ("%s", "%s", "%d", "%s")' % (name, grade, age, id)
            cursor.execute(sql)
            db.commit()
            # searchAll()  # 插入数据后显示所有的学生信息
            answer = input('是否要继续插入?y/n\n')
            if answer == 'y':
                continue
            else:
                break
        except:
            db.rollback()

    # db.close()


# 查询所有学生信息
def searchAll():
    cursor = db.cursor()  # 创建一个游标对象 cursor
    sql = 'select * from mstudent'
    try:
        cursor.execute(sql)  # 执行SQL语句
        results = cursor.fetchall()  # 获取所有记录列表
        # 定义标题显示格式
        format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:<10}'
        print(format_title.format('ID', '姓名', '班级', '年龄', '学号'))
        # 定义内容的显示格式
        format_data = '{:^6}\t{:^12}\t{:^10}\t{:^10}\t{:^12}'
        for row in results:
            id = row[0]
            name = row[1]   # 姓名
            grade = row[2]  # 班级
            age = row[3]  # 年龄
            num = row[4]  # 学号
            print(format_data.format(id, name, grade, age, num))
    except:
        print("错误:无法查到数据")
    # db.close()


# 查找数据
def search():
    cursor = db.cursor()
    while True:
        mode = input('查询所有学生信息请输入1,按姓名查找请输入2,按年龄查找请输入3:')
        if mode == '1':
            sql = "select * from mstudent"
        elif mode == '2':
            name = input('请输入学生姓名:')
            sql = "select * from mstudent where name = '%s'" % name
        elif mode == '3':
            age = int(input('请输入学生的年龄:'))
            sql = "select * from mstudent where age >= '%d'" % age
        else:
            print('您的输入有误,请重新输入')
            search()
        try:
            cursor.execute(sql)
            # 获取所有记录表
            results = cursor.fetchall()
            # 定义标题显示格式
            format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:<10}'
            print(format_title.format('ID', '姓名', '班级', '年龄', '学号'))
            # 定义内容的显示格式
            format_data = '{:^6}\t{:^12}\t{:^10}\t{:^10}\t{:^12}'
            for row in results:
                id = row[0]
                name = row[1]  # 姓名
                grade = row[2]  # 班级
                age = row[3]  # 年龄
                num = row[4]  # 学号
                print(format_data.format(id, name, grade, age, num))
        except BaseException as e:
            print("错误:无法查到数据")
            print(e)
        else:
            answer = input('是否要继续查询?y/n\n')
            if answer == 'y':
                continue
            else:
                break

# def delete():
#     cursor = db.cursor()
#     num = input("请输入要删除的学生的学号:")
#     sql = "DELETE  from mstudent where xuehao = '%s'" % num
#     try:
#         cursor.execute(sql)
#         db.commit()
#         searchAll()
#     except:
#         db.rollback()

# 删除数据
def delete():
    cursor = db.cursor()
    while True:
        num = input("请输入要删除的学生的学号:")
        cursor.execute('select * from mstudent where xuehao = "%s"' % num)
        result1 = cursor.fetchone()
        if result1 is not None:
            print("该学生的信息为:")
            print(result1)
            print(f"确定要删除学号为{num}的学生信息吗?", end='')
            re = input('请输入y/n: ')
            if re == 'y':
                sql = "DELETE from mstudent where xuehao = '%s'" % num
                try:
                    cursor.execute(sql)
                    db.commit()
                    searchAll()  # 删除后要重新显示所有学生信息
                except:
                    db.rollback()
            else:
                return
        else:
            print(f"没有该学号为{num}的学生的的信息")
        answer = input('是否继续删除?y/n\n')
        if answer == 'y' or answer == 'Y':
            continue
        else:
            break


# 修改数据
def modify():
    searchAll()
    cursor = db.cursor()
    while True:
        num = input("请输入要修改的学生的学号:")
        name = input("请输入姓名:")
        age = int(input("请输入年龄:"))
        grade = input("请输入班级:")
        sql = 'update mstudent set name = "%s", banji = "%s", age = "%d" where xuehao = "%s"' % (name, grade, age, num)
        try:
            print('---------------该学生修改之前的信息------------')
            cursor.execute('select * from mstudent where xuehao = "%s"' % num)
            result1 = cursor.fetchone()
            print(result1)

            cursor.execute(sql)
            db.commit()

            print('---------------该学生修改之后的信息------------')
            cursor.execute('select * from mstudent where xuehao = "%s"' % num)
            result1 = cursor.fetchone()
            print(result1)
        except:
            db.rollback()
        answer = input('是否继续修改其他学生的信息?y/n\n')
        if answer == 'y':
            modify()
        else:
            break


启动运行mysql

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MySQL 5.5 Command Line Client位置

  1. 打开左下角[开始]菜单;
    在这里插入图片描述

  2. 点开所有程序;
    在这里插入图片描述

  3. 找到Mysql文件;
    在这里插入图片描述

  4. 打开mysql文件,然后打开文件MySQL Server 5.5(我下载的是5.5版本的,每个人可能不同);
    在这里插入图片描述

  5. 即可找到 MySQL 5.5 Command Line Client,为了以后方便使用,可以发送到桌面,在桌面生成一个快捷方式;
    在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学生用户模块: 1.学生用户注册、登录 2.学生可查看自己对应学科的成绩 3.返回前页+返回首页 管理员用户模块: 1.管理员用户注册、登录 2.管理员用户查看学生整体对应学科的成绩信息 3.管理员用户修改某个学生对应学科的成绩信息 4.管理员用户增加某个学生对应学科的成绩信息 5.管理员用户删除某个学生对应学科的成绩信息 成绩公示用户模块: 1.学生用户登录 2.学生可查看自己班的排名成绩和自己在班内排名成绩信息 3.学生可对某学科成绩信息进行数据备份 4.管理员用户登录 5.管理员可查看所有学生的排名成绩和对指定学生查看排名成绩信息 6.管理员可查看所有学生某学科的平均分 7.管理员可查看多有学生某学科的及格人数和不及格人数 8.管理员可对某学科成绩信息进行数据备份 关于模块: 1.对于此系统的说明,是谁做的,指导教师是谁 帮助模块: 1.调用docx个人心得 2.调用docx使用手册 3.2非功能需求 数据准确度:在精度需求上,数据在输入、输出的过程要满足各种数据精度的需求并且具有一定的提示信息。如,在学科选择时,需要填写点击正确的学科;在登录注册时,要输入正确的符号信息,不能输入非法字符;在增删改查时,要输入正确的符号信息,不能输入非法字符。 适应性:在操作环境变化时,系统应具有适应性,保证系统能够正常运行。数据库要适应于python将系统配置的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值