• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python操作数据库获取结果之fetchone和fetchall的区别说明

    每次使用python获取查询结果的时候,都会纠结一段时间到底用fetchone和fetchall,用不好容易报错,关键在于没有搞清楚它们之间的区别和使用场景。

    fetchone与fetchall区别

    环境:python3中

    fetchone

    不管查询结果是多条数据还是单条数据,使用fetchone得到的始终是一个元组。

    如果查询结果是单条数据:fetchone得到的单条数据的元组;

    如果查询结果是多条数据:fetchone默认是结果中的第一条数据构成的元组;

    这就决定了如果需要取元组中的数值,需要使用cur.fetchone[0]

    fetchall

    不管查询结果是多条数据还是单条数据,使用fetchall得到的始终是一个由元组组成的列表。

    如果查询结果是单条数据:fetchall得到的是由单个元组组成的列表,列表内是有单条数据组成的元组,即列表包含元组;

    如果查询结果是多条数据:fetchall得到的是由多个元组组成的列表;

    这就决定了如果需要取元组中的数值,需要使用cur.fetchone[0][0]

    使用场景

    一般来说,查询结果集是单条数据的,使用fetchone获取数据

    一般来说,查询结果集是多条数据的,使用fetchall获取数据

    简单实例

    import cx_Oracle
    conn = cx_Oracle.connect("用户名/密码@数据库地址")
    cur = conn.cursor()
    sql_3 = "select id from CZEPT_BSDT t WHERE name='{}'".format("基本支出调剂")
    cur.execute(sql_3)
    result_3 = cur.fetchone() # 单条数据结果集
    print(result_3)  # (1,)
    print(type(result_3)) # class 'tuple'>
    result_3= result_3[0] 
    print(result_3)  # 1
    print(type(result_3)) # class 'int'>
    print("*" * 50)
    sql_2 = "select * from CZEPT_BSDT "  
    cur.execute(sql_2)
    result_2 = cur.fetchall()  # 多条数据结果集
    print(result_2)  # [(1,'基本支出调剂'),(3,'银行账户审批'),(5,'项目支出调剂')]
    print(type(result_2))  # class 'list'>
    result_2= result_2[0][0]
    print(result_2)   # 1
    print(type(result_2))  # class 'int'>

    注意事项

    对于使用fetchone和fetchall获取到的结果,最好使用之前先判断非空,否则在存在空值的情况下获取元组内的数据时,会报“超出索引”的异常。多次踩雷坑。

    import cx_Oracle
    connection = cx_Oracle.connect('用户名/密码@数据库地址')
    cur = connection.cursor()
    for j in data_list:
        sql = "select guid from jczl.division where name='{}'".format(j['DIVISIONNAME'])
        cur.execute(sql)
        result = cur.fetchone()
        # 因为存在归口处室为空,所以切片的时候总是报超出索引范围,搞了好久
        if result is not None:
            j['DIVISIONGUID'] = str(result[0])

    补充:python DB.fetchall()--获取数据库所有记录列表

    查询到的数据格式为列表:

    多个元素的列表:

    单个元素的列表:

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

    您可能感兴趣的文章:
    • python 操作mysql数据中fetchone()和fetchall()方式
    • Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
    • Python连接MySQL并使用fetchall()方法过滤特殊字符
    上一篇:python基于tkinter点击按钮实现图片的切换
    下一篇:python之cur.fetchall与cur.fetchone提取数据并统计处理操作
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python操作数据库获取结果之fetchone和fetchall的区别说明 python,操作,数据库,获取,