Python通过pymysql调用MySQL进行增删改移查

作者:那人独钓寒江雪. 时间:2024-01-28 07:59:17 

一、关系数据库

1.数据模型

实体间的关系分为以下有三种:

1*)一对一模型

一对一(one-to-one)

关系模型用二维表格表示数据及数据联系,是应用最为广泛的数据模型。目前,各种常用的数据库,如Microsoft SQL Server、Microsoft Access、Microsoft FoxPro、Oracle、MySQL、SQLite等,都属于关系模型数据库管理系统。

2*)一对多模型

一对多(one-to-many)

层次模型采用树状结构表示数据之间的联系,树的节点称为记录,记录之间只有简单的层次关系。有且只有一个节点没有父节点,该节点称为根节点;其他节点有且只有一个父节点。

3*)多对多模型

多对多(many-to-many)

可以有任意多个节点没有父节点。一个节点允许有多个父节点。两个节点之间可以有两种或两种以上联系。

2.面相对象模型

1*)对象模型概念

面向对象模型是在面向对象技术基础上发展起来一种的数据模型,它采用面向对象的方法来设计数据库。

2*)对象模型特点

面向对象模型的数据库种存储对象以对象为单位,每个对象包含对象的属性和方法,具有类和继承等特点。

二、了解关系数据库的概念和特点

关系数据库的概念和特点

基本概念

i*)关系

数据和数据之间的联系称为关系。

ii*)二维表

关系数据库使用二维表来表示和存储关系,一个关系就是一个二维表。表中的行称为记录,列称为字段。一个数据库可以包含多个表。

iii*)记录与字段

表中的一行称为一个记录。表中的列为记录中的数据项,称为字段。字段也称为属性或者列。每个记录可以包含多个字段,不同记录包含相同的字段(字段的值不同)。例如,用户表中的每个记录包含用户名、登录密码等字段。

关系数据库不允许在一个表中出现重复的记录。

VI*)关键字

可以唯一标识一个记录的字段或字段组合称为关键字。一个表可有多个关键字,其中用于标识记录的关键字称为主关键字,其他的关键字可称为候选关键字。一个表只允许有一个主关键字。例如,用户表中的用户名可定义为主关键字,在添加记录时,主关键字不允许重复。

VII*)外部关键字

如果一个表中的字段或字段组合作为其他表的主关键字,这样的字段或字段组合称为外部关键字。

基本特点

1.关系数据库中的表是二维表,表中的字段必须是不可再分的,即不允许表中表。

2.在同一个表中不允许出现重复的记录。

3.在同一个记录中不允许出现重复的字段。

4.表中记录先后顺序不影响数据的性质,可以交换记录顺序。

5.记录中字段的顺序不影响数据,可以交换字段的顺序。

三、常用字段数据类型

数据表格

Python通过pymysql调用MySQL进行增删改移查

四、使Mysql和Pymysql链接成功

第一步、先在Navicat Premium 12中找到数据表登录链接

Python通过pymysql调用MySQL进行增删改移查

Python通过pymysql调用MySQL进行增删改移查

注明:数据表一定要存在 不然数据修改追加不进去的!!!!

第二步、 显示链接成功后登入spyder 或者pycharm使用pymysql调用mysql

注明:博主使用的spyder

Python通过pymysql调用MySQL进行增删改移查


import pymysql

#定义数据库链接参数
host = '127.0.0.1'  #或者用local host
port = 3306
db = 'student'
user = 'root'
password = 'lyt2529165097'
conn = pymysql.connect(host=host, port=port, db=db, user=user, password=password)
def main():
   cursor = conn.cursor(pymysql.cursors.SSCursor)  #流式游标,默认返回元组
   return cursor
通过在spyder里面输入主机号 端口号 主机名 密码等就可以登录进去了

第三步、编写代码登录系统

1.编写系统登录退出界面


while True:
   print('请选择以下菜单号:')
   print('========='*3)
   print('1、登录学生信息管理系统')
   print('2、退出学生信息管理系统')
   print('========='*3)
   mc1 = int(input('输入菜单号:'))
   if mc1 == 1:
       login()
   elif mc1 == 2:
       print('感谢使用学生信息管理系统!')
       break

当然了,进入系统怎么可能不需要密码呢。一定要给自己设置密码哦 不然别人半夜删你代码!!!

2.编写进入系统用户名和密码


def login():
   administartor = input('请输入用户名:')
   password = input('请输入密码:')
   if administartor == '雷云腾' and password == 'lyt2529165097':

Python通过pymysql调用MySQL进行增删改移查

成功进入系统后,就可以编写下一个程序了,比如我们把菜单系统都编写出来,这样就有了一个整体架构

3.编写登录后供选择的菜单

登录主菜单


#登入后的菜单----展开
def login():
   administartor = input('请输入用户名:')
   password = input('请输入密码:')
   if administartor == '雷云腾' and password == 'lyt2529165097':
       print("恭喜你成功登录系统!!")
       while True:
           print('学生信息管理系统')
           print('================')
           print('1、增加学生记录')
           print('2、查询学生记录')
           print('3、修改学生记录')
           print('4、删除学生记录')
           print('5、显示所有的学生记录')
           print('6、返回上级菜单')
           print('=================')
           mc2 = int(input('输入菜单号:'))
           if mc2 == 1:
               add_student()
           elif mc2 == 2:
               query_student()
           elif mc2 == 3:
               update_student
           elif mc2 == 4:
               delete_student()
           elif mc2==5:
               print_student()
           else:
               break
   else:
       print('账号或密码错误!')

成功进入系统后并且拥有菜单系统的时候就可以编写下一个程序了,比如我们先编写插入记录的程序

4.编写增加学生记录的程序


#插入学生记录
def add_student():
   cursor = main()
   id = int(input('学号:'))
   name = input('姓名:')
   gender = input('性别:')
   age = int(input('年龄:'))
   class1 = input('班级:')
   major = input('专业:')
   college = input('学院:')
   add = cursor.execute('insert into stu (id, name, gender, age, class1, major, college)\
                  values(%s,%s,%s,%s,%s,%s,%s)',(id, name, gender, age, class1, major, college))
   if add == 1:
       conn.commit()
       print('插入成功!')
   else:
       print('插入失败!')

Python通过pymysql调用MySQL进行增删改移查

第四步、编写查询学生信息记录的代码

I*)按照学号查询学生记录


#按学号查询
def Q_by_id():
   cursor = main()
   choice_id = int(input('请输入学号:'))
   cursor.execute('select * from stu where id =%s',(choice_id))
   students = cursor.fetchall()
   for stu in students:
       print(stu[0], stu[1], stu[2], stu[3], stu[4], stu[5], stu[6])
       print('查询成功')
        re = input('是否继续查询(yes/no):')
       if re == 'yes':
           Q_by_id()
       else:
           query_student()

II*)按照姓名查询学生记录


#按姓名查询(以防学号输入错误)
def Q_by_name():
   cursor = main()
   choose_name = input('请输入姓名:')
   cursor.execute('select * from stu where name =%s',(choose_name))
   students = cursor.fetchall()
   for stu in students:
       print(stu[0], stu[1], stu[2], stu[3], stu[4], stu[5], stu[6])
       print()
       re = input('是否继续查询yes/no:')
       if re == 'yes':
           Q_by_name()
       else:
           query_student()

III*)查询所有学生的信息记录


#查询所有学生
def Q_all():
   cursor = main()
   cursor.execute('select * from stu')
   students = cursor.fetchall()
   for student in students:
       print('\t{}\t{}\t{}\t{}\t{}\t{}\t{}' .format(student[0], student[1], student[2], student[3], student[4], student[5], student[6]))

Python通过pymysql调用MySQL进行增删改移查

Python通过pymysql调用MySQL进行增删改移查

这样就查询成功啦!,如果还想要进行查询的话,也是可以编写代码来实现的!

VI*)编写"是否"进行查询记录


re = input('是否继续查询(yes/no):')
       if re == 'yes':
           Q_by_id()
       else:
           query_student()

Python通过pymysql调用MySQL进行增删改移查

当然 除了能查询 当然还得有可供我们选择的菜单啦!不然我们是无法进入程序经行增删改查的

VII*)写出登录菜单后还要写出可供我们查询的菜单

查询记录菜单


#查询的菜单
def query_student():
   while True:
       print('查询学生记录')
       print('================')
       print('1、按学号查询学生记录')
       print('2、按姓名查询学生记录')
       print('3、查询全部学生记录')
       print('4、返回上级菜单')
       print('=================')
       mc3 = int(input('请输入查询的菜单号:'))
       if mc3 == 1:
           Q_by_id()
       elif mc3 == 2:
           Q_by_name()
       elif mc3 == 3:
           Q_all()
       else:
           break

Python通过pymysql调用MySQL进行增删改移查

注明:不光要写出代码 还要写出可供选择的菜单哦~

VII*)编写删除学生记录程序

删除记录的菜单


#删除的菜单
def delete1_student():
   print('============================')
   print('1、删除学生所有信息')
   print('2、回到初始界面')
   print('============================')
   mc4 = int(input('Input menu number:'))
   if mc4 == 1:
       delete_student()
   elif mc4 == 3:
       login()

删除学生姓名为雷云腾的信息

首先要知道他的学号,然后还有姓名

Python通过pymysql调用MySQL进行增删改移查

接下来就是我们最难的环节 也是我们的重头戏 修改指定的学生记录

还是需要知道他的学号,姓名


def update_student():
       cursor = main()
       cur= int(input('请输入想要修改学生的学号:'))
       cursor.execute('select * from stu where id = %s', (cur))
       if cursor.fetchall() == []:
           print('未查找到学号是{}的学生'.format(cur))
           mc3 = input('是否重新查询?(yes/no)')
           if mc3 != 'no':
               update_student()
           else:
               login()
       else:
           print('==============')
           print('1、修改姓名')
           print('2、修改性别')
           print('3、修改年龄')
           print('4、修改班级')
           print('5、修改专业')
           print('6、修改学院')
           print('7、返回上级菜单')
           print('==============')
           mc2 = int(input('请输入菜单号:'))
           if mc2 == 1:
               name = input('请输入修改后的名字:')
               a = cursor.execute('update stu set name = %s where id = %s', (name, cur))
               if a == 1:
                   conn.commit()
                   print('修改成功!')
               else:
                   print('修改失败!')
           elif mc2 == 2:
               gender1 = input('请输入修改后的性别:')
               a = cursor.execute('update stu set genden = %s where id = %s', (gender1, cur))
               if a > 1:
                   conn.commit()
                   print('修改成功!')
               else:
                   print('修改失败!')
           elif mc2 == 3:
               age1 = int(input('请输入修改后的年龄:'))
               a = cursor.execute('update stu set age = %s where id = %s', (age1, cur))
               if a > 1:
                   conn.commit()
                   print('修改成功!')
               else:
                   print('修改失败!')
           elif mc2 == 4:
               class1 = input('请输入修改后的班级:')
               a = cursor.execute('update stu set class = %s where id = %s', (class1, cur))
               if a > 1:
                   conn.commit()
                   print('修改成功!')
               else:
                   print('修改失败!')
           elif mc2 == 5:
               major1 = input('请输入修改后的专业:')
               a = cursor.execute('update stu set major = %s where id = %s', (major1, cur))
               if a > 1:
                   conn.commit()
                   print('修改成功!')
               else:
                   print('修改失败!')
           elif mc2 == 6:
               college1 = input('请输入修改后的学院:')
               a = cursor.execute('update stu set college = %s where id = %s', (college1, cur))
               if a > 1:
                   conn.commit()
                   print('修改成功!')
               else:
                   print('修改失败!')
           else:
               pass#占一个空位符

当我还没有关闭数据表时还未更新,这时候我们需要关闭所更新的数据表并且重新打开

Python通过pymysql调用MySQL进行增删改移查

这时候我们关闭数据表他就会对我们所更改的数据进行更新

Python通过pymysql调用MySQL进行增删改移查

Python通过pymysql调用MySQL进行增删改移查

当然除了更改姓名还可以更改学号 性别学院等等…

五、 All源码(注明)

这个就不告诉大家了 给大家讲了那么多知识,相信多看看多实训一定都能打出来甚至做的更好的。

六、博客总结

1.为什么会写代码

现在代码不仅会增加自己学识和思维 随着学识的增加 也会影响到其他事物中去,当然,在博客中经常会遇到一些生活、学习上的看似棘手的问题,那时我总是在举步维艰时强迫自己认为能找到出路。久而久之,自己也产生了这样一种思维模式,认为事情总是可以找到答案的。每次写出一个博客和文章得到同行和老师的称赞我都会兴奋不已 为我下一次更好的博客内容做铺垫。

2.特定思维

在这个过程中,我又感觉到写代码也与之前解决问题的模式相似,每一次完成一个完整的东西,都形成了一种特定思维模式的一小部分,也许这就是写代码的乐趣。

3.思维灵感

当我每次困惑一个问题很久很久不能解决的时候 我会感到很压抑,这时候我会试着出去呼吸一下新鲜空气 伸个懒腰 把思绪放空。你就会发现身上顿时轻松了很多。回来再解决这个困惑的时候发现特别容易。有时候灵感就是你压抑很久突然放松之后来的,那一瞬间。

4.脑+手

培养自己编程思维,培养自己编程乐趣。代码不是凭空想象出来的,是一行一行的敲出来的,运行成功没有捷径 只有靠自己的脑+手。

来源:https://blog.csdn.net/m0_62491934/article/details/122196333

标签:Python,pymysql,MySQL
0
投稿

猜你喜欢

  • Linux+php+apache+oracle环境搭建之CentOS下安装Oracle数据库

    2023-10-08 01:02:56
  • Pytorch之8层神经网络实现Cifar-10图像分类验证集准确率94.71%

    2022-03-03 21:14:36
  • Django模板继承与模板的导入实例详解

    2023-04-03 14:41:28
  • MySQL索引类型Normal、Unique和Full Text的讲解

    2024-01-20 09:56:19
  •  Go 语言实现 HTTP 文件上传和下载

    2023-06-23 01:42:24
  • Python中常见的数据类型小结

    2022-03-25 07:55:17
  • Python工程师面试题 与Python基础语法相关

    2021-07-08 16:20:50
  • ORACLE 最大连接数的问题

    2009-07-23 14:27:00
  • Python OpenCV招商银行信用卡卡号识别的方法

    2022-01-16 06:31:30
  • python将人民币转换大写的脚本代码

    2021-03-05 17:36:23
  • python3.7调试的实例方法

    2022-09-22 17:16:24
  • GoFrame代码优化gconv类型转换避免重复定义map

    2024-04-27 15:32:04
  • php实现的微信分享到朋友圈并记录分享次数功能

    2023-10-17 04:32:14
  • 用python实现操纵mysql数据库插入

    2024-01-16 01:15:41
  • 采用XMLHTTP编写一个天气预报的程序

    2007-10-15 12:35:00
  • Django权限控制的使用

    2023-12-27 01:50:57
  • Python 实现list,tuple,str和dict之间的相互转换

    2021-02-28 12:35:42
  • php实现的三个常用加密解密功能函数示例

    2023-07-20 06:25:52
  • Python实现向好友发送微信消息

    2021-11-11 18:33:02
  • 教你如何在Mac上安装mysql数据库

    2024-01-23 05:19:10
  • asp之家 网络编程 m.aspxhome.com