精华内容
下载资源
问答
  • 一个使用 tkinter(一个 Python GUI 库)的 python + sqlite3 数据库管理系统 这是一个小型项目,作为 KTU 下 B.Tech CSE 应用软件开发的一部分完成。 在运行此代码,并将数据库 (.db) 文件与以查看更改。 在 ...
  • 在本教程中,您将学到如何使用 SQL 访问和处理数据系统中的数据,这类数据库包括:Oracle, Sybase, SQL Server, DB2, Access 等等。 数据库引入 socket编程中,客户端从服务端下载一个文件,这个文件应该存在哪? ...
  • 大二的一名菜鸡程序员完成的数据库实验报告…就自己用tkinker的窗口对接了本地的数据库,界面很丑。。但基本功能能够实现哈哈哈~ 首先需要两个库,pymysql和tkinter,pymysql可以用其他连接数据库的代替。 import ...

    大二的一名菜鸡程序员完成的数据库实验报告…就自己用tkinker做的窗口对接了本地的数据库,界面很丑。。但基本功能能够实现哈哈哈~

    首先需要两个库,pymysql和tkinter,pymysql可以用其他连接数据库的代替。

    import pymysql
    from tkinter import *
    from tkinter import ttk
    

    先连接数据库

    con = pymysql.connect(host='localhost', port=3306, user='root', password='******', db='test')
    cur = con.cursor()
    

    写一个数据库类(其实可以直接用函数,我想的是统一的数据库类方便调试的找位置)

    class Mysql(object):
        num = ''  # 添加内容
        name = ''
        major = ''
    
        def insert(self, num, name, major):
            sql = """
            insert into 学生信息表 (学号,姓名,专业) values ("{num}","{name}","{major}")
            """.format(num=num, name=name, major=major)
            return sql
    
        def delete(self, num, name, major):
            sql1 = """
            delete from 学生信息表 where 学号= "{num}" ;
            """.format(num=num)
            sql2 = """
            delete from 学生信息表 where 姓名= "{name}" ;
            """.format(name=name)
            sql3 = """
            delete from 学生信息表 where 专业= "{major}" ;
            """.format(major=major)
            All = """
            delete from 学生信息表;
            """
            return sql1, sql2, sql3, All
    
        def select(self, num, name, major):
            sql = """
            select * from 学生信息表
            """
            sql1 = """
            select 学号 from 学生信息表
            """
            sql2 = """
            select 姓名 from 学生信息表
            """
            sql3 = """
            select 专业 from 学生信息表
            """
            sql4 = """
            select * from 学生信息表 where 学号="{num}";
            """.format(num=num)
            sql5 = """
            select * from 学生信息表 where 姓名="{name}";
            """.format(name=name)
            sql6 = """
            select * from 学生信息表 where 专业="{major}";
            """.format(major=major)
            return sql, sql1, sql2, sql3, sql4, sql5, sql6
    
        def change(self, num, name, major, oldName):
            sql = """
            update 学生信息表 set 学号="{num}" where 姓名="{oldName}";
            """.format(num=num, oldName=oldName)
            sql2 = """
            update 学生信息表 set 姓名="{name}" where 姓名="{oldName}";
            """.format(name=name, oldName=oldName)
            sql3 = """
            update 学生信息表 set 专业="{major}" where 姓名="{oldName}";
            """.format(major=major, oldName=oldName)
            return sql, sql2, sql3
    

    再写一个窗口所需要的类Choose

    class Choose:
        num = ''
        name = ''
        major = ''
        size = '600x300'
        Width = 20
        Height = 1
    

    代码的主体部分就全部放在这个类里面的,包含了连接数据库的操作和窗口创立,一部分一部分贴代码吧

    增加选项

        def intoInsert(self):
            top2 = Tk(className='增加选项')
            y1 = 0
            y2 = y1 + 100
            y3 = y2 + 100
            x = 150
    
            def getDate():
                mysql = Mysql()
                Choose.num = text.get('0.0', 'end')
                Choose.name = text2.get('0.0', 'end')[:-1]
                Choose.major = text3.get('0.0', 'end')[:-1]
                print(Choose.num,Choose.name,1,Choose.major)
                top3 = Tk(className='OK')
                Label(top3, text='传值成功!', width=Choose.Width, height=Choose.Height, command=top2.destroy(), bg='#32FFFF',
                      fg='#FF6666', font=('宋体', 20), relief=SUNKEN).pack()
                top3.geometry('200x50')
                top3.resizable(0, 0)
                top3.mainloop()
    
                cur.execute(mysql.insert(Choose.num, Choose.name, Choose.major))
                con.commit()
    
            text = Text(top2, width=30, height=1, font=('宋体', 20))
            # Button(top2, text='确定', width=Choose.Width, height=Choose.Height).place(x=x, y=30)
            Label(top2, text='请输入学号', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y1)
    
            text2 = Text(top2, width=30, height=1, font=('宋体', 20))
            # Button(top2, text='确定', width=Choose.Width, height=Choose.Height).place(x=x, y=30+y2)
            Label(top2, text='请输入姓名', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y2)
    
            text3 = Text(top2, width=30, height=1, font=('宋体', 20))
            Button(top2, text='确定', width=Choose.Width, height=Choose.Height, command=getDate).place(x=x + 80, y=60 + y3)
            Label(top2, text='请输入专业', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y3)
    
            top2.geometry(Choose.size)
            top2.resizable(0, 0)
    
            text.place(x=x, y=y1)
            text2.place(x=x, y=y2)
            text3.place(x=x, y=y3)
            top2.mainloop()
    

    整体为增加选项的窗口代码,在其中有一个方法getDate是表示在窗口输入的数据通过其方法将连接到数据库中,实现在数据库中的数据添加内容

    删除选项

    def intoDelete(self):
            mysql = Mysql()
            top2 = Tk(className='删除选项')
            y1 = 0
            y2 = y1 + 70
            y3 = y2 + 70
            y4 = y3 + 70
            x = 150
    
            def getNum():
                Choose.num = text.get('0.0', 'end')
                num, name, major, All = mysql.delete(Choose.num, Choose.name, Choose.major)
                top3 = Tk(className='OK')
                Label(top3, text='传值成功!', width=Choose.Width, height=Choose.Height, command=top2.destroy(),
                      bg='#32FFFF',
                      fg='#FF6666', font=('宋体', 20), relief=SUNKEN).pack()
                top3.geometry('200x50')
                top3.resizable(0, 0)
                top3.mainloop()
    
                cur.execute(num)
                con.commit()
    
            def getName():
                Choose.name = text2.get('0.0', 'end')[:-1]
                num, name, major, All = mysql.delete(Choose.num, Choose.name, Choose.major)
                top3 = Tk(className='OK')
                Label(top3, text='传值成功!', width=Choose.Width, height=Choose.Height, command=top2.destroy(),
                      bg='#32FFFF',
                      fg='#FF6666', font=('宋体', 20), relief=SUNKEN).pack()
                top3.geometry('200x50')
                top3.resizable(0, 0)
                top3.mainloop()
    
                cur.execute(name)
                con.commit()
    
            def getMajor():
                Choose.major = text3.get('0.0', 'end')[:-1]
                num, name, major, All = mysql.delete(Choose.num, Choose.name, Choose.major)
                top3 = Tk(className='OK')
                Label(top3, text='传值成功!', width=Choose.Width, height=Choose.Height, command=top2.destroy(),
                      bg='#32FFFF',
                      fg='#FF6666', font=('宋体', 20), relief=SUNKEN).pack()
                top3.geometry('200x50')
                top3.resizable(0, 0)
                top3.mainloop()
                cur.execute(major)
                con.commit()
    
            def getAll():
                num, name, major, All = mysql.delete(Choose.num, Choose.name, Choose.major)
                top3 = Tk(className='OK')
                Label(top3, text='删除成功!', width=Choose.Width, height=Choose.Height, command=top2.destroy(),
                      bg='#32FFFF',
                      fg='#FF6666', font=('宋体', 20), relief=SUNKEN).pack()
                top3.geometry('200x50')
                top3.resizable(0, 0)
                top3.mainloop()
                cur.execute(All)
                con.commit()
    
            text = Text(top2, width=30, height=1, font=('宋体', 20))
            Button(top2, text='确定', width=Choose.Width, height=Choose.Height, command=getNum).place(x=x + 80, y=30)
            Label(top2, text='请输入学号', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y1)
    
            text2 = Text(top2, width=30, height=1, font=('宋体', 20))
            Button(top2, text='确定', width=Choose.Width, height=Choose.Height, command=getName).place(x=x + 80, y=30 + y2)
            Label(top2, text='或输入姓名', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y2)
    
            text3 = Text(top2, width=30, height=1, font=('宋体', 20))
            Button(top2, text='确定', width=Choose.Width, height=Choose.Height, command=getMajor).place(x=x + 80, y=30 + y3)
            Label(top2, text='或输入专业', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y3)
    
            Button(top2, text='点击删除所有数据', width=35, height=2, fg='#C24AC6', bg='#FAFF5F', font=('楷体', 15)
                   , command=getAll).place(x=x - 30, y=30 + y4)
    
            top2.geometry(Choose.size)
            top2.resizable(0, 0)
    
            text.place(x=x, y=y1)
            text2.place(x=x, y=y2)
            text3.place(x=x, y=y3)
            top2.mainloop()
    
    

    整体结构和增加差不多,多了一个 “删除所有数据选项”,以数据库类传下来的参数调用数据库实现功能。

    更改选项

    def intoUpdate(self):
            oldName = ''
            top2 = Tk(className='更改选项')
            y1 = 0
            y2 = y1 + 70
            y3 = y2 + 70
            y4 = y3 + 70
            x = 150
    
            def getNum():
                mysql = Mysql()
                Choose.num = text2.get('0.0', 'end')
                oldName = text.get('0.0', 'end')[:-1]
                num, name, major = mysql.change(Choose.num, Choose.name, Choose.major, oldName)
                top3 = Tk(className='OK')
                Label(top3, text='传值成功!', width=Choose.Width, height=Choose.Height, command=top2.destroy(), bg='#32FFFF',
                      fg='#FF6666', font=('宋体', 20), relief=SUNKEN).pack()
                top3.geometry('200x50')
                top3.resizable(0, 0)
                top3.mainloop()
    
                cur.execute(num)
                con.commit()
    
            def getName():
                mysql = Mysql()
                Choose.name = text3.get('0.0', 'end')[:-1]
                Choose.oldName = text.get('0.0', 'end')[:-1]
                num, name, major = mysql.change(Choose.num, Choose.name, Choose.major, Choose.oldName)
                top3 = Tk(className='OK')
                Label(top3, text='传值成功!', width=Choose.Width, height=Choose.Height, command=top2.destroy(), bg='#32FFFF',
                      fg='#FF6666', font=('宋体', 20), relief=SUNKEN).pack()
                top3.geometry('200x50')
                top3.resizable(0, 0)
                top3.mainloop()
    
                cur.execute(name)
                con.commit()
    
            def getMajor():
                mysql = Mysql()
                Choose.major = text4.get('0.0', 'end')[:-1]
                Choose.oldName = text.get('0.0', 'end')[:-1]
                num, name, major = mysql.change(Choose.num, Choose.name, Choose.major, Choose.oldName)
                top3 = Tk(className='OK')
                Label(top3, text='传值成功!', width=Choose.Width, height=Choose.Height, command=top2.destroy(), bg='#32FFFF',
                      fg='#FF6666', font=('宋体', 20), relief=SUNKEN).pack()
                top3.geometry('200x50')
                top3.resizable(0, 0)
                top3.mainloop()
    
                cur.execute(major)
                con.commit()
    
            text = Text(top2, width=30, height=1, font=('宋体', 20))
            Label(top2, text='输入原姓名', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y1)
    
            text2 = Text(top2, width=30, height=1, font=('宋体', 20))
            Button(top2, text='确定', width=Choose.Width, height=Choose.Height,  command=getNum).place(x=x + 60, y=30+y2)
            Label(top2, text='请输入学号', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y2)
    
            text3 = Text(top2, width=30, height=1, font=('宋体', 20))
            Button(top2, text='确定', width=Choose.Width, height=Choose.Height, command=getName).place(x=x + 60, y=30+y3)
            Label(top2, text='请输入姓名', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y3)
    
            text4 = Text(top2, width=30, height=1, font=('宋体', 20))
            Button(top2, text='确定', width=Choose.Width, height=Choose.Height, command=getMajor).place(x=x + 60, y=30 + y4)
            Label(top2, text='请输入专业', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y4)
    
            top2.geometry(Choose.size)
            top2.resizable(0, 0)
    
            text.place(x=x, y=y1)
            text2.place(x=x, y=y2)
            text3.place(x=x, y=y3)
            text4.place(x=x, y=y4)
            top2.mainloop()
    

    目前只能支持一个数据一个数据的修改…

    查询选项

    数据库最重要和复杂的功能我只实现了最基础的几个选项以后有机会会更新函数计算的功能

    def intoSelect(self):
            mysql = Mysql()
            width = 100
            top2 = Tk(className='查询选项')
            y1 = 0
            y2 = y1 + 70
            y3 = y2 + 70
            y4 = y3 + 70
            x = 150
            # All, AllNum, AllName, AllMajor, num, name, major = mysql.select(Choose.num, Choose.name, Choose.major)
    
            def getAll():
                All, AllNum, AllName, AllMajor, num, name, major = mysql.select(Choose.num, Choose.name, Choose.major)
                top3 = Tk(className='整表查询')
                top3.geometry('500x300')
                top3.resizable(0, 0)
    
                tree = ttk.Treeview(top3)
                tree['columns'] = ('学号', '姓名', '专业')
    
                tree.column('学号', width=120)
                tree.column('姓名', width=width)
                tree.column('专业', width=width)
    
                tree.heading('#0', text='数量', anchor='w')
                tree.column('#0', anchor='w')
                tree.heading('学号', text='学号')
                tree.heading('姓名', text='姓名')
                tree.heading('专业', text='专业')
    
                cpt = 1
                cur.execute(All)
                for row in cur:
                    tree.insert('', 'end', text=str(cpt), values=(row[0], row[1], row[2]))
                    cpt += 1
                con.commit()
    
                tree.pack()
                top3.mainloop()
    
            def getAllNum():
                Choose.num = text.get('0.0', 'end')
                All, AllNum, AllName, AllMajor, num, name, major = mysql.select(Choose.num, Choose.name, Choose.major)
                top3 = Tk(className='所有学号查询')
                top3.geometry('500x300')
                tree = ttk.Treeview(top3)
                tree['columns'] = ('学号')
    
                tree.column('学号', width=120)
    
                tree.heading('#0', text='数量', anchor='w')
                tree.column('#0', anchor='w')
                tree.heading('学号', text='学号')
    
                cur.execute(AllNum)
                cpt = 1
                for row in cur:
                    tree.insert('', 'end', text=str(cpt), values=(row[0]))
                    cpt += 1
                con.commit()
    
                tree.pack()
                top3.resizable(0, 0)
                top3.mainloop()
    
            def getAllName():
                Choose.num = text.get('0.0', 'end')
                All, AllNum, AllName, AllMajor, num, name, major = mysql.select(Choose.num, Choose.name, Choose.major)
                top3 = Tk(className='所有姓名查询')
                top3.geometry('500x300')
                tree = ttk.Treeview(top3)
                tree['columns'] = ('姓名')
    
                tree.column('姓名', width=120)
    
                tree.heading('#0', text='数量', anchor='w')
                tree.column('#0', anchor='w')
                tree.heading('姓名', text='姓名')
    
                cur.execute(AllName)
                cpt = 1
                for row in cur:
                    tree.insert('', 'end', text=str(cpt), values=(row[0]))
                    cpt += 1
                con.commit()
    
                tree.pack()
                top3.resizable(0, 0)
                top3.mainloop()
    
            def getAllMajor():
                Choose.num = text2.get('0.0', 'end')
                All, AllNum, AllName, AllMajor, num, name, major = mysql.select(Choose.num, Choose.name, Choose.major)
                top3 = Tk(className='所有专业查询')
                top3.geometry('500x300')
                tree = ttk.Treeview(top3)
                tree['columns'] = ('专业')
    
                tree.column('专业', width=120)
    
                tree.heading('#0', text='数量', anchor='w')
                tree.column('#0', anchor='w')
                tree.heading('专业', text='专业')
    
                cur.execute(AllMajor)
                cpt = 1
                for row in cur:
                    tree.insert('', 'end', text=str(cpt), values=(row[0]))
                    cpt += 1
                con.commit()
    
                tree.pack()
                top3.resizable(0, 0)
                top3.mainloop()
    
            def getName():
                Choose.name = text2.get('0.0', 'end')[:-1]
                All, AllNum, AllName, AllMajor, num, name, major = mysql.select(Choose.num, Choose.name, Choose.major)
    
                top3 = Tk(className='姓名查询')
                top3.geometry('500x300')
                top3.resizable(0, 0)
    
                tree = ttk.Treeview(top3)
                tree['columns'] = ('学号', '姓名', '专业')
    
                tree.column('学号', width=120)
                tree.column('姓名', width=width)
                tree.column('专业', width=width)
    
                tree.heading('#0', text='数量', anchor='w')
                tree.column('#0', anchor='w')
                tree.heading('学号', text='学号')
                tree.heading('姓名', text='姓名')
                tree.heading('专业', text='专业')
    
                cpt = 1
                cur.execute(name)
                for row in cur:
                    tree.insert('', 'end', text=str(cpt), values=(row[0], row[1], row[2]))
                    cpt += 1
                con.commit()
    
                tree.pack()
                top3.mainloop()
    
            def getMajor():
                Choose.major = text3.get('0.0', 'end')[:-1]
                All, AllNum, AllName, AllMajor, num, name, major = mysql.select(Choose.num, Choose.name, Choose.major)
    
                top3 = Tk(className='专业查询')
                top3.geometry('500x300')
                top3.resizable(0, 0)
    
                tree = ttk.Treeview(top3)
                tree['columns'] = ('学号', '姓名', '专业')
    
                tree.column('学号', width=120)
                tree.column('姓名', width=width)
                tree.column('专业', width=width)
    
                tree.heading('#0', text='数量', anchor='w')
                tree.column('#0', anchor='w')
                tree.heading('学号', text='学号')
                tree.heading('姓名', text='姓名')
                tree.heading('专业', text='专业')
    
                cpt = 1
                cur.execute(major)
                for row in cur:
                    tree.insert('', 'end', text=str(cpt), values=(row[0], row[1], row[2]))
                    cpt += 1
                con.commit()
    
                tree.pack()
                top3.mainloop()
    
            def getNum():
                Choose.num = text.get('0.0', 'end')
                All, AllNum, AllName, AllMajor, num, name, major = mysql.select(Choose.num, Choose.name, Choose.major)
                top3 = Tk(className='学号查询')
                top3.geometry('500x300')
                top3.resizable(0, 0)
    
                tree = ttk.Treeview(top3)
                tree['columns'] = ('学号', '姓名', '专业')
    
                tree.column('学号', width=120)
                tree.column('姓名', width=width)
                tree.column('专业', width=width)
    
                tree.heading('#0', text='数量', anchor='w')
                tree.column('#0', anchor='w')
                tree.heading('学号', text='学号')
                tree.heading('姓名', text='姓名')
                tree.heading('专业', text='专业')
    
                cpt = 1
                cur.execute(num)
                for row in cur:
                    tree.insert('', 'end', text=str(cpt), values=(row[0], row[1], row[2]))
                    cpt += 1
                con.commit()
    
                tree.pack()
                top3.mainloop()
    
            text = Text(top2, width=14, height=1, font=('宋体', 20))
            Button(top2, text='确定', width=Choose.Width, height=Choose.Height, command=getNum).place(x=x, y=30)
            Label(top2, text='请输入学号', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y1)
    
            text2 = Text(top2, width=14, height=1, font=('宋体', 20))
            Button(top2, text='确定', width=Choose.Width, height=Choose.Height, command=getName).place(x=x, y=30 + y2)
            Label(top2, text='或输入姓名', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y2)
    
            text3 = Text(top2, width=14, height=1, font=('宋体', 20))
            Button(top2, text='确定', width=Choose.Width, height=Choose.Height, command=getMajor).place(x=x, y=30 + y3)
            Label(top2, text='或输入专业', bg='#32FFFF', fg='#FF6666', font=('宋体', 20), width=10, height=1, relief=SUNKEN) \
                .place(x=0, y=y3)
    
            Button(top2, text='查询所有学号', width=20, height=2, fg='#795106', bg='#86AEF9', font=('黑体', 12),
                   command=getAllNum).place(x=400, y=0)
            Button(top2, text='查询所有姓名', width=20, height=2, fg='#795106', bg='#86AEF9', font=('黑体', 12),
                   command=getAllName).place(x=400, y=70)
            Button(top2, text='查询所有专业', width=20, height=2, fg='#795106', bg='#86AEF9', font=('黑体', 12),
                   command=getAllMajor).place(x=400, y=140)
    
            Button(top2, text='查询所有数据', width=35, height=2, fg='#C24AC6', bg='#FAFF5F', font=('楷体', 15), command=getAll)\
                .place(x=x-30, y=30 + y4)
    
            top2.geometry(Choose.size)
            top2.resizable(0, 0)
    
            text.place(x=x, y=y1)
            text2.place(x=x, y=y2)
            text3.place(x=x, y=y3)
            top2.mainloop()
    
    
    choose = Choose()
    

    虽然是简单的实现查询功能,但确实方法写的最多的一个项目

    调用部分

    def hitButton():
        global top
        top.destroy()
        top2 = Tk()
        top2.title('操作选项')
        width = 72
        height = 1
        Button(top2, text='增加', width=width, height=height, command=choose.intoInsert, bg='light green', font='楷体') \
            .grid(row=0, column=1, padx=10, pady=20)
        Button(top2, text='删除', width=width, height=height, command=choose.intoDelete, bg='light yellow', font='楷体') \
            .grid(row=10, column=1, padx=10, pady=20)
        Button(top2, text='修改', width=width, height=height, command=choose.intoUpdate, bg='light pink', font='楷体') \
            .grid(row=20, column=1, padx=10, pady=20)
        Button(top2, text='查询', width=width, height=height, command=choose.intoSelect, bg='red', font='楷体') \
            .grid(row=30, column=1, padx=10, pady=20)
    
        top2.geometry('600x300')
        top2.resizable(0, 0)  # 锁定窗口大小
        top2.mainloop()
    
    
    bt = Button(width=10, height=2, command=hitButton)
    bt['text'] = '登陆'
    
    lb.pack()
    bt.pack()
    top.geometry('320x100')
    top.resizable(0, 0)
    top.mainloop()
    
    print('Yes')
    

    起始界面
    选择界面

    查询界面
    增加选项
    更改选项
    删除选项

    只是最基本的实现了功能肯定有很多缺点不足,希望有大佬指教。。

    展开全文
  • 学生信息管理系统的案例 使用函数方法 学生信息使用表格进行保存 显示系统的功能选项- 用户需要根据指定的功能选项完成对应的操作 studentSystem.py代码 from MysqlClient import MysqlClient import pymysql # ...

    学生信息管理系统的案例

    使用函数方法

    • 学生信息使用表格进行保存
    • 显示系统的功能选项- 用户需要根据指定的功能选项完成对应的操作

    studentSystem.py代码

    from MysqlClient import MysqlClient
    import pymysql
    # 学生信息管理系统使用MySQL函数法
    
    # 显示功能菜单的函数
    def main():
        print("-"*10, "欢迎进入学生信息管理系统", "-"*10)
        print("1、添加学生信息")
        print("2、删除学生信息")
        print("3、修改学生信息")
        print("4、查询学生信息")
        print("5、查询所有学生信息")
        print("6、退出")
    
        # 接受用户输入的功能选项
        menu_option = int(input("请输入您要进行的操作(输入数字即可):\r\n"))
    
        # 判断用户输入的功能选项
        if menu_option == 1:
            sname = input("请输入新学生的姓名:\r\n")
            age = int(input("请输入新学生的年龄:\r\n"))
            sex = input("请输入新学生的性别:\r\n")
            add(sname,  age,  sex)
        elif menu_option == 2:
            sid = int(input("请输入您想要删除的学生的学号:\r\n"))
            delete(sid)
        elif menu_option == 3:
            sid = int(input("请输入您想修改的学生的学号:\r\n"))
            update(sid)
        elif menu_option == 4:
            sid = int(input("请输入您想进行查询的学生的学号:\r\n"))
            find(sid)
        elif menu_option == 5:
            findAll()
        elif menu_option == 6:
            exit()
        return
    
    # 添加用户的函数
    def add(sname, age, sex):
        try:
            conn = MysqlClient().getConnection()
            if conn != None:
                cus1 = conn.cursor()
                sql = "insert into tb_student(sname,  sage,  ssex) VALUES "
                sql += "('%s',  %d,  '%s')"%(sname,  age,  sex)
                psw = cus1.execute(sql)
                conn.commit()
                if psw > 0:
                    print("添加成功")
                else:
                    print("添加失败")
        except Exception as e:
            print("添加失败")
        finally:
            conn.close()
            main()
            return
    
    # 删除用户的函数
    def delete(sid):
        try:
            conn = MysqlClient().getConnection()
            if conn != None:
                cus1 = conn.cursor()
                sql = "DELETE FROM tb_student WHERE sid = %d" %(sid)
                psw = cus1.execute(sql)
                conn.commit()
                if psw > 0:
                    print("删除成功")
                else:
                    print("删除失败")
        except Exception as e:
            print("删除失败")
        finally:
            conn.close()
            main()
            return
    
    
    # 修改用户的函数
    def update(sid):
        try:
            conn = MysqlClient().getConnection()
            if conn != None:
                sname = input("请输入要改成的新姓名:\r\n")
                sage = int(input("请输入要改成的新年龄:\r\n"))
                ssex = input("请输入要改成的新性别:\r\n")
                cus1 = conn.cursor()
                sql = "UPDATE tb_student SET sname = '%s',  sage = %d,  ssex = '%s' WHERE sid = %d"%(sname, sage, ssex, sid)
                psw = cus1.execute(sql)
                conn.commit()
                if psw > 0:
                    print("修改成功")
                else:print("修改失败")
        except Exception as e:
            print("修改失败,请检查输入", e)
        finally:
            conn.close()
            main()
            return
    
    # 查询单个用户的函数
    def find(sid):
        try:
            conn = MysqlClient().getConnection()
            if conn != None:
                cus1 = conn.cursor()
                sql = "SELECT * FROM tb_student WHERE sid = %d " %(sid)
                psw = cus1.execute(sql)
                conn.commit()
                fet = cus1.fetchall()[0]
                print("学号  姓名  年龄  性别")
                print(fet[0],  "-",  fet[1],  "-",  fet[2],  "-",  fet[3])
        except Exception as e:
            print("查询失败", e)
        finally:
            conn.close()
            main()
            return
    
    
    # 查询所有用户的函数
    def findAll():
        try:
            conn = MysqlClient().getConnection()
            if conn != None:
                cus1 = conn.cursor()
                sql = "SELECT * FROM tb_student "
                psw = cus1.execute(sql)
                conn.commit()
                fet = cus1.fetchall()
                print("学号  姓名  年龄  性别")
                for i in fet:
                    print(i[0],  "-",  i[1],  "-",  i[2],  "-",  i[3])
        except Exception as e:
            print("查询失败", e)
        finally:
            conn.close()
            main()
            return
    
    # 入口
    if __name__ == "__main__":
        main()
    

    MysqlClient.py代码

    import pymysql
    class MysqlClient:
        def getConnection(self):
            try:
                conn = pymysql.connect(host = "localhost", port = 3306, user = 'root', passwd = "123456", db = "student", charset = 'utf8')
                return conn
            except Exception as e:
                print(e)
    
    

    MySQL数据库配置
    在这里插入图片描述

    运行结果
    在这里插入图片描述

    展开全文
  • python使用MYSQL数据库

    2019-10-01 09:39:51
    测试的时候都会用到数据库,今天写一篇通过python连接MYSQL数据库 ...MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management S...

      在做测试的时候都会用到数据库,今天写一篇通过python连接MYSQL数据库

     

    什么是MYSQL数据库

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

    什么是PYMYSQL

    PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

    PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

     

    PyMySQL安装

    pip install pymysql

     

    PyMySQL使用

    连接数据库

    1、首先导入PyMySQL模块

    2、连接数据库(通过connect())

    3、创建一个数据库对象 (通过cursor())

    4、进行对数据库做增删改查

    # coding:utf-8
    import pymysql
    # 连接数据库
    count = pymysql.connect(
                host = 'xx.xxx.xxx.xx', # 数据库地址
                port = 3306,    # 数据库端口号
                user='xxxx',    # 数据库账号
                password='XXXX',    # 数据库密码
                db = 'test_sll')    # 数据库表名
    # 创建数据库对象 db = count.cursor()

    查找数据

    db.fetchone()获取一条数据

    db.fetchall()获取全部数据

    # coding:utf-8
    import pymysql
    # 连接数据库
    count = pymysql.connect(
                host = 'xx.xxx.xxx.xx', # 数据库地址
                port = 3306,    # 数据库端口号
                user='xxxx',    # 数据库账号
                password='xxxx',    # 数据库密码
                db = 'test_sll')    # 数据库名称
    # 创建数据库对象
    db = count.cursor()
    # 写入SQL语句
    sql = "select * from students "
    # 执行sql命令
    db.execute(sql)
    # 获取一个查询
    # restul = db.fetchone()
    # 获取全部的查询内容
    restul = db.fetchall()
    print(restul)
    db.close()

    修改数据

    commit() 执行完SQL后需要提交保存内容

    # coding:utf-8
    import pymysql
    # 连接数据库
    count = pymysql.connect(
                host = 'xx.xxx.xxx.xx', # 数据库地址
                port = 3306,    # 数据库端口号
                user='xxx',    # 数据库账号
                password='xxx',    # 数据库密码
                db = 'test_sll')    # 数据库表名
    # 创建数据库对象
    db = count.cursor()
    # 写入SQL语句
    sql =  "update students set age = '12' WHERE id=1"
    # 执行sql命令
    db.execute(sql)
    # 保存操作
    count.commit()
    db.close()

    删除数据

    # coding:utf-8
    import pymysql
    # 连接数据库
    count = pymysql.connect(
                host = 'xx.xxx.xxx.xx', # 数据库地址
                port = 3306,    # 数据库端口号
                user='xxxx',    # 数据库账号
                password='xxx',    # 数据库密码
                db = 'test_sll')    # 数据库表名
    # 创建数据库对象
    db = count.cursor()
    # 写入SQL语句
    sql =  "delete from students where age = 12"
    # 执行sql命令
    db.execute(sql)
    # 保存提交
    count.commit()
    db.close()

    新增数据

    新增数据这里涉及到一个事务问题,事物机制可以保证数据的一致性,比如插入一个数据,不会存在插入一半的情况,要么全部插入,要么都不插入

    # coding:utf-8
    import pymysql
    # 连接数据库
    count = pymysql.connect(
                host = 'xx.xxx.xxx.xx', # 数据库地址
                port = 3306,    # 数据库端口号
                user='xxxx',    # 数据库账号
                password='xxx',    # 数据库密码
                db = 'test_sll')    # 数据库表名
    # 创建数据库对象
    db = count.cursor()
    # 写入SQL语句
    sql = "insert INTO students(id,name,age)VALUES (2,'安静','26')"
    # 执行sql命令
    db.execute(sql)
    # 保存提交
    count.commit()
    db.close()

    到这可以发现除了查询不需要保存,其他操作都要提交保存,并且还会发现删除,修改,新增,只是修改了SQL,其他的没什么变化

     

    创建表

    创建表首先我们先定义下表内容的字段

    字段名 含义 类型
    id id varchar
    name 姓名 varchar
    age 年龄 int

     

     

     

     

     

     

    # coding:utf-8
    import pymysql
    # 连接数据库
    count = pymysql.connect(
                host = 'xx.xxx.xxx.xx', # 数据库地址
                port = 3306,    # 数据库端口号
                user='xxxx',    # 数据库账号
                password='xxx',    # 数据库密码
                db = 'test_sll')    # 数据库表名
    # 创建数据库对象
    db = count.cursor()
    # 写入SQL语句
    sql = 'CREATE TABLE students (id VARCHAR(255) ,name VARCHAR(255) ,age INT)'
    # 执行sql命令
    db.execute(sql)
    db.close()

     

    转载于:https://www.cnblogs.com/qican/p/11240250.html

    展开全文
  • 在贴代码之前先说明一下python连接mysql数据库的步骤 1.首先导入pymysql包,如果没有,则在左上角File->Settings->找到project->project Interpreter 点击右上角加号,搜索pymysql,选中pymysql点击坐下角...

    在贴代码之前先说明一下python连接mysql数据库的步骤

    1.首先导入pymysql包,如果没有,则在左上角File->Settings->找到project->project Interpreter 点击右上角加号,搜索pymysql,选中pymysql点击坐下角Install Package,等待安装完毕即可

    2.然后就是代码部分,下面贴一个简单做查询的代码

    import pymysql
    
    
    def query():
        connection = pymysql.connect(host="localhost", user="root",
                                     password="123456", database="student",
                                     port=3306)
        # 获取游标 对数据库进行操作 设置返回的每条记录都是一个字典,返回的结果集是一个列表
        cur = connection.cursor(cursor=pymysql.cursors.DictCursor)
        # 写sql语句
        sql = "select * from stu"
        try:
            cur.execute(sql)
            students = cur.fetchall()
            print(type(students))
            print(students)
        except Exception as e:
            raise e
        finally:
            connection.close()  # 关闭连接
    
    
    query()

    运行结果为:

    <class 'list'>
    [{'id': '123', 'name': '张三', 'sex': '男', 'phone': '123456789'}]

    如果不将游标设置 ,则返回的都是元组类型的,可以看如下代码:

    import pymysql
    
    
    def query():
        connection = pymysql.connect(host="localhost", user="root",
                                     password="123456", database="student",
                                     port=3306)
        # 获取游标 对数据库进行操作 设置返回的每条记录都是一个字典,返回的结果集是一个列表
        # cur = connection.cursor(cursor=pymysql.cursors.DictCursor)
        cur = connection.cursor()
        # 写sql语句
        sql = "select * from stu"
        try:
            cur.execute(sql)
            students = cur.fetchall()
            print(type(students))
            print(students)
        except Exception as e:
            raise e
        finally:
            connection.close()  # 关闭连接
    
    
    query()

    运行结果为:

    <class 'tuple'>
    (('123', '张三', '男', '123456789'),)

     这就是一个简单的查询,我们设置游标将返回的记录设置为字典类型,结果集为列表,与我们之前存储的一样,字典更便于操作

     后面的插入删除看具体代码,基本连接mysql就是这样子。 

    ------------------------------------------------------------------分割线------------------------------------------------------------------

     下面是这个学生管理系统具体代码,里面注释很详细,只不过是在我之前的学生管理系统上加了数据库操作

    之前的管理系统https://blog.csdn.net/hsunnyc/article/details/89097679

     

    import pymysql
    
    
    name_list = []  # 存储学生信息字典,学生信息用字典存,再用列表存储字典
    
    
    # 菜单
    def display_menu():
        print("-" * 30)
        print("   学生管理系统  v8.8  ")
        print("1.添加学生信息")
        print("2.删除学生信息")
        print("3.修改学生信息")
        print("4.查询单个学生信息")
        print("5.查询所有学生信息")
        print("6.退出系统")
        print("-" * 30)
    
    
    # 选择序号的获得
    def get_choice():
        selected_key = input("请输入选择的序号:")
        return selected_key
    
    
    # 检查性别是否合法
    def check_sex(new_sex):
        flag = True
        while flag:
            if new_sex == '男' or new_sex == '女':
                flag = False
            else:
                new_sex = input("输入性别有误,请重新输入(男/女):")
        return new_sex
    
    
    # 检查电话号码是否合法
    def check_phone(new_phone):
        flag = True
        while flag:
            if new_phone.isdigit():
                flag = False
            else:
                new_phone = input("您输入的电话号码有误,请重新输入:")
        return new_phone
    
    
    # 检查学号是否重复或者有误
    def check_id(new_id):
        flag = True
        while flag:
            # 先检查是不是纯数字再去考虑是否重复的事情,如果不是纯数字直接pass
            if new_id.isdigit():
                for i in range(len(name_list)):
                    if name_list[i]['id'] == new_id:
                        new_id = check_id(input("您输入的学号重复,请重新输入:"))
                flag = False
            else:
                new_id = input("您输入的学号有误,请重新输入:")
        return new_id
    
    
    # 添加学生信息 返回学生信息字典
    def add_name():
        new_info = {}
        new_id = check_id(input("请输入学号:"))
        new_info['id'] = new_id
        new_name = input("请输入姓名:")
        new_info['name'] = new_name
        new_sex = check_sex(input("请输入性别(男/女):"))
        new_info['sex'] = new_sex
        new_phone = check_phone(input("请输入电话号码:"))
        new_info['phone'] = new_phone
        name_list.append(new_info)
        # 将新学生信息添加到数据库中
        stu_insert(new_info)
        print("添加成功!")
    
    
    # 查询所有学生信息  --是从数据库中查询信息的
    def find_all():
        print("=" * 30)
        global name_list
        name_list = query()
        for name in name_list:
            print(name['id'], name['name'], name['sex'], name['phone'])
        print("=" * 30)
    
    
    # 删除学生信息
    def del_name():
        del_id_is = input("请输入要删除的学生学号:")
        flag = False
        index = 0
        for i in range(len(name_list)):
            if name_list[i]['id'] == del_id_is:
                flag = True
                index = i
                break
        if flag:
            name_list.pop(index)
            stu_delete(del_id_is)
            print("删除成功!")
        else:
            print("学生未找到!请检查学号输入是否有误!")
    
    
    # 名字修改细节函数
    def choice_of_name(index):
        while True:
            choice = input("请输入要修改学生的(1.姓名 2.性别 3.电话号码,4.全部修改):")
            if choice == '4':
                """
                    要做到内存中的数据与数据库中数据同时修改的话,我做的是先修改本地的数据,
                    再对数据库中的数据做修改
                """
                new_name = input("请输入新的姓名:")
                name_list[index]['name'] = new_name
                new_sex = check_sex(input("请输入性别(男/女):"))
                name_list[index]['sex'] = new_sex
                new_phone = check_phone(input("请输入电话号码:"))
                name_list[index]['phone'] = new_phone
                stu_modify(name_list[index])
                break
            elif choice == '1':
                new_name = input("请输入新的姓名:")
                name_list[index]['name'] = new_name
                stu_modify(name_list[index])
                break
            elif choice == '2':
                new_sex = check_sex(input("请输入性别(男/女):"))
                name_list[index]['sex'] = new_sex
                stu_modify(name_list[index])
                break
            elif choice == '3':
                new_phone = check_phone(input("请输入电话号码:"))
                name_list[index]['phone'] = new_phone
                stu_modify(name_list[index])
                break
            else:
                print("输入有误,请重新输入!")
    
    
    # 修改学生信息
    def re_name():
        id_is = input("请输入要修改的学生学号:")
        flag = False
        index = 0
        # 先找到要修改的学生的下标
        for i in range(len(name_list)):
            if name_list[i]['id'] == id_is:
                flag = True
                index = i
                break
        if flag:
            choice_of_name(index)
            print("修改成功!")
        else:
            print("修改失败,学生信息未找到!")
    
    
    # 查询单个学生信息 --并不是从数据库中查询的,还是从内存中查询的
    def find_name():
        find_id_is = input("请输入要查询的学生学号:")
        flag = False
        index = 0
        for i in range(len(name_list)):
            if name_list[i]['id'] == find_id_is:
                flag = True
                index = i
                break
        if flag:
            print("学生查询到,学生信息为:")
            print(name_list[index]['id'], name_list[index]['name'], name_list[index]['sex'], name_list[index]['phone'])
        else:
            print("学生未找到!")
    
    
    # 获取数据库连接的方法
    def get_connection():
        connection = pymysql.connect(host="localhost", user="root", password="123456", database="student", port=3306)
        return connection
    
    
    # 初始化的时候从数据库中查询学生信息
    def query():
        connection = get_connection()
        # 获取游标 对数据库进行操作 并且将返回值设置为字典类型
        cur = connection.cursor(cursor=pymysql.cursors.DictCursor)
        # 写sql语句
        sql = "select * from stu"
        try:
            cur.execute(sql)
            students = cur.fetchall()
            """
                此处判断很重要,如果数据库中没有记录,则会结果是一个空的元组类型,
                如果有记录,则结果是list类型,所以可以根据类型来判断数据库是否为空,
                如果不是就返回一个空列表。
            """
            if type(students) == list:
                return students
            else:
                return []
        except Exception as e:
            raise e
        finally:
            connection.close()  # 关闭连接
    
    
    # 初始化函数,从数据库中查询到的赋值给name_list
    def name_init():
        try:
            global name_list
            name_list = query()
            print("成功获取数据库中数据!")
        except Exception as e:
            raise e
    
    
    # 添加学生 -- 直接添加到数据库里面
    def stu_insert(stu):
        connection = get_connection()
        # 获取游标 对数据库进行操作 并且将返回值设置为字典类型
        cur = connection.cursor(cursor=pymysql.cursors.DictCursor)
        # 写sql语句
        sql = "insert into stu(id,name,sex,phone) values('%s','%s','%s','%s')"
        sid = stu['id']
        name = stu['name']
        sex = stu['sex']
        phone = stu['phone']
        try:
            cur.execute(sql % (sid, name, sex, phone))
            connection.commit()
        except Exception as e:
            # 错误回滚
            connection.rollback()
            raise e
        finally:
            connection.close()  # 关闭连接
    
    
    # 删除学生 --直接从数据库里面删除
    def stu_delete(sid):
        connection = get_connection()
        cur = connection.cursor()
        sql = "delete from stu where id = '%s'"
        try:
            cur.execute(sql % sid)
            connection.commit()
        except Exception as e:
            # 错误回滚
            connection.rollback()
            raise e
        finally:
            connection.close()  # 关闭连接
    
    
    # 修改学生信息
    def stu_modify(stu):
        connection = get_connection()
        cur = connection.cursor()
        sid = stu['id']
        name = stu['name']
        sex = stu['sex']
        phone = stu['phone']
        sql = "update stu set name='%s',sex='%s',phone='%s' where id='%s'"
        try:
            cur.execute(sql % (name, sex, phone, sid))
            connection.commit()
        except Exception as e:
            # 错误回滚
            connection.rollback()
            raise e
        finally:
            connection.close()  # 关闭连接
    
    
    def main():
        name_init()
        exit_name = True
        while exit_name:
            display_menu()
            key = get_choice()
            if key == '1':
                add_name()
            elif key == '2':
                del_name()
            elif key == '3':
                re_name()
            elif key == '4':
                find_name()
            elif key == '5':
                find_all()
            elif key == '6':
                exit_name = False
            else:
                print("请输入正确的数值!")
    
    
    main()
    

    数据库表结构:

     

     注意下面的每个字段的字符集,都是utf8。

     

    展开全文
  • 学了数据库之后,我们可以用数据库一个用户管理系统。实现注册,登陆,查看,删除用户等功能。 第一步:具体分成里两个部分,第一部分是连接数据库,,并且创建表,将表封装成一个类。 具体实现如下: from ...
  • ICMS是“导入案例管理系统”,此存储库包含原始基于Oracle的系统中的Python / Django / PostgreSQL端口。 要求 仅开发 设置 本地虚拟环境 出于以下几个原因,需要使用本地虚拟环境: 为了能够运行预提交检查 如果...
  • 实训选的是人工智能,要使用Python,然而没学过,本项目是实训课的第一个项目,用Python做一个简单的学生管理系统,无对象属性要求。因为之前一直在学Web后端,第一感觉就是使用MVC架构。然而初学Python不会用数据库...
  • 一个用python+mysql数据库课程设计,代码资源,教务管理系统
  • 一、 为什么要使用配置如果我们在较复杂的项目中不使用配置文件,我们可能会面临下面的情况:你决定更改你的项目中数据库的 host, 因为你要将项目从测试环境转移到实际的上产环境中。如果你的项目中多个位置用到了...
  • MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 什么是PYMYSQL PyMySQL 是在 Python3.x 版本中...
  • doraemon的python 数据库1

    2019-10-08 01:22:40
    ## 第十章 数据库 ### 10.1 数据库的基本认识 为什么要有数据库: ...- 很多功能如果只能通过文件来改变数据是给常繁琐的,程序员就需要很多事情...- 数据库管理系统——专门用来管理数据文件,帮助用户更简洁...
  • 1、SQL(结构化查询语言),是基于关系代数运算的一种数据查询语言,用于存取数据,查询、更新和管理关系型数据库系统。SQL(Structure Query Language) 语言的内部再分类如下:DDL:Data Difinition Language 数据定义...
  • Python 学生管理系统

    千次阅读 2018-10-22 08:53:25
    首先 先连接到数据库 才能后面的管理 建个db的包连接数据库 创建连接 输出connnet 如果显示出 就代表连接成功 连接成功数据库之后 创建需要操作的实体类 entity包 实体类 封装好属性 下一步 写相对应的dao方法 ...
  • 之前去的一家公司,去的时候项目已经好了,但是需要我根据数据库做一个后台管理系统,管理用户和其他的一些数据。 直接说方法 django框架 python manage.py inspectdb > models.py flask框架 pip ...
  • 本来数据库这一块是用到再说的,但是整个项目完之后,发现先把这一块给弄好后,后续的就好办了 感觉这个数据库就是后端、后台的内容,而界面设计就是前端的东西。 数据库的初始化完全就是sqlite3的内容,主要思路...
  • 我们想要使用Python来操作MySQL数据库,完成数据库的增删改查工作,首要要两件事情:安装数据库和安装依赖的Python库。 首要我们要在自己的电脑上面安装MySQL数据库,如果你不知道如何下载安装MySQL,可以参考我...
  • python员工入职信息管理系统 用sql的,包含源码,图片以及sql数据库等信息 文件压缩包,百度网盘自提 链接:https://pan.baidu.com/s/1GGAHvPRUgSZAvLzz1Gdmtg 提取码:fvsy
  • 这个和你的知识积累有关,例如我是Linux 系统管理员出身,我比较擅长shell 。 我可能就会选择perl ,也可能会选择php ,其实如果你注意到其语法结构的话,就会发现,shell、perl、php 的语法都是相似的,甚至其...
  • python基础-使用pymysql员工信息管理系统 写在最前:git源码:https://github.com/yuedashen88/WorkerInfoMangerSystem 需求 1、运行该程序,会显示菜单,输入指令可以进行增删改查操作 2、使用面向对象的编程思维...
  • 此回购是在BITBIT-Pilani Hyderabad校区的Gururaj先生教授的带领下,在2020-21年第二学期完成的课程“数据库管理系统”中完成的工作。 该项目是餐厅工作系统的Web应用程序,因此可以组织其数据。 该项目中使用的技术...
  • Python成绩管理系统:1、包括增、删、改、查 2、拥有简易UI界面 3、数据使用CSV文件存储 4、不包含数据库,5适合大学生上完这个课程制作,6适合课程设计
  • Python之CMDB资产管理系统

    千次阅读 2019-09-25 03:38:55
    最近正好在给公司CMDB资产管理系统,现在的也差不多了,现在回头吧思路整理下。 CMDB介绍 CMDB --Configuration Management Database 配置管理数据库,CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有...
  • 编程(Python)实现大学校友的个人信息管理网站,具有友好人机交互界面,具备对校友基本信息的增删改查功能。基于的django的Python web开发,实现管理员登录和学生登录,要求学生本人使用学号注册登录,填写个人信息...
  • 这是一个基于Python的图书信息管理系统,使用MySQL数据库管理数据,用tkinterGUI界面。功能齐全,分管理员和读者两个部分,可注册、修改密码、切换登录。对读者系统,内含个人信息展示,可修改个人信息,查询、...
  • python写的学生成绩管理系统,界面是用tkinker库的,通过mysql数据库实现了对学生信息的增删改查。有用户登陆界面和用户注册界面。
  • 图书管理系统所有的操作都依赖于数据库,本系统使用sqlite3数据库python3自带这个数据库功能。 数据库的初始化首先检测本地有没有这个数据库,没有的话直接初始化数据 1,构造一个数据库类DbManager,为后面真正...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 375
精华内容 150
关键字:

python做数据库管理系统

python 订阅