• 带你彻底搞懂python操作mysql数据库(cursor游标讲解)


    这篇文章主要介绍了带你彻底搞懂python操作mysql数据库(cursor游标讲解),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    1、什么是游标?

    一张图讲述游标的功能:

    图示说明:

    2、使用游标的好处?

    如果不使用游标功能,直接使用select查询,会一次性将结果集打印到屏幕上,你无法针对结果集做第二次编程。使用游标功能后,我们可以将得到的结果先保存起来,然后可以随意进行自己的编程,得到我们最终想要的结果集。

    3、利用python连接数据库,经常会使用游标功能

    1)以python连接mysql数据库为例

    2)使用游标的操作步骤

    • 首先,使用pymysql连接上mysql数据库,得到一个数据库对象。
    • 然后,我们必须要开启数据库中的游标功能,得到一个游标对象。
    • 接着,使用游标对象中的execute()方法,去执行某个SQL语句,系统会根据你的SQL语句,找到这些匹配行,给你存储起来,而不是一次性的打印到频幕上。当你什么时候需要这个结果中的数据的时候,你就去获取它。
    • 最后,就是获取结果集中的数据了,这里有两种方法获取结果集中的数据。一个是fetchone(),该方法一次获取一条记录,每一条记录是一个元组形式的数据,每获取一条记录游标会往前移动一格,等待获取下一条记录;一个是fetchall()方法,能够一次性的获取所有的数据,该方法返回的是一个元组列表。
    • 当完成所有操作后,记得断开数据库的连接,释放资源。

    ① 连接数据库,创建一个数据库对象

    1
    2
    db = pymysql.connect(host='localhost',user='root',db='huangwei',
               password='123456',port=3306,charset='utf8')

    注意:我们要操作的是huangwei这个数据库中的表,因此在连接的时候使用db这个参数来指明要使用哪一个数据库;由于mysql数据库就装在本机上,因此可以写localhost,当然你也可以写成主机名,或者主机ip;

    ② 开启游标功能,创建游标对象

    1
    2
    # 这里使用的是数据库对象db中的cursor()方法,
    cursor = db.cursor()

    ③ 使用execute()方法,执行SQL语句

    1
    cursor.execute('select sname,ssex from student')

    注意:当开启游标功能执行这个SQL语句后,系统并不会将结果直接打印到频幕上,而是将上述得到的结果,找个地方存储起来,提供一个游标接口给我们,当你需要获取数据 的时候,就可以从中拿数据。

    ④ 使用fetchone()或fetchall()获取数据

    # 一次性获取一条数据
    a = cursor.fetchone()
     
    # 一次性获取所有数据
    a = cursor.fetchall()

    注意:使用游标获取数据,需要用一个变量将结果存储起来,才能被我们拿来做二次使用,这里在下面的案例中会体现出来。

    ⑤ 断开数据库,释放资源

    db.close()

    3)案例讲解

    需求:以操做huangwei数据库中的student表为例 。完成【筛选出女生,同时将sname以这种形式输出“我叫周梅,我是一个学生!”】这个需求。

    ① student表

     

    ② 使用fetchone()方法,获取SQL查询结果集中的数据

    db = pymysql.connect(host='localhost',user='root',db='huangwei',
               password='123456',port=3306,charset='utf8')
    cursor = db.cursor()
    cursor.execute('select count(*) from student')
    aa = cursor.fetchone()
    print(aa)
     
    # 注意这一句一定是在循环之外,不能放到循环里面。想想这是为什么?
    cursor.execute('select sname,ssex from student') 
    for i in range(aa[0]):
      a,b = cursor.fetchone()
      if b == "":
        a = "我叫{},我是一个学生!".format(a)
        print(a)
    db.close()

    结果如下:

    ③ 使用fetchall()方法,获取SQL查询结果集中的数据

    db = pymysql.connect(host='localhost',user='root',db='huangwei',
               password='123456',port=3306,charset='utf8')
    cursor = db.cursor()
    cursor.execute('select sname,ssex from student')
    aa = cursor.fetchall()
    # print(aa)
    for a,b in aa:
      if b == "":
        a = "我叫{},我是一个学生!".format(a)
        print(a)
    db.close()

     结果如下:

    ④ 结果分析

    通过上述操作可以发现,这种游标功能可以帮助我们对SQL语句得到的结果集,进行二次开发,然后通过灵活的python语法,得到任何我们最终想要的结果集。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 相关阅读:
    问题账户需求分析
    UnityWebRequest_ZT
    NetworkManager网络通讯_问题汇总(四)
    NetworkManager网络通讯_NetworkLobbyManager(三)
    NetworkManager网络通讯_NetworkManager(二)
    C#关于private protected sealed Virtual/Override
    NetworkManager网络通讯_Example(一)
    Udp 异步通信(三)
    TCP Socket服务端客户端(二)
    TCP UDP基本编程(一)
  • 原文地址:https://www.cnblogs.com/cafe910912/p/15480792.html
Copyright © 2020-2023  润新知