时间:2021-05-22
每次使用python获取查询结果的时候,都会纠结一段时间到底用fetchone和fetchall,用不好容易报错,关键在于没有搞清楚它们之间的区别和使用场景。
环境:python3中
不管查询结果是多条数据还是单条数据,使用fetchone得到的始终是一个元组。
如果查询结果是单条数据:fetchone得到的单条数据的元组;
如果查询结果是多条数据:fetchone默认是结果中的第一条数据构成的元组;
这就决定了如果需要取元组中的数值,需要使用cur.fetchone[0]
不管查询结果是多条数据还是单条数据,使用fetchall得到的始终是一个由元组组成的列表。
如果查询结果是单条数据:fetchall得到的是由单个元组组成的列表,列表内是有单条数据组成的元组,即列表包含元组;
如果查询结果是多条数据:fetchall得到的是由多个元组组成的列表;
这就决定了如果需要取元组中的数值,需要使用cur.fetchone[0][0]
一般来说,查询结果集是单条数据的,使用fetchone获取数据
一般来说,查询结果集是多条数据的,使用fetchall获取数据
对于使用fetchone和fetchall获取到的结果,最好使用之前先判断非空,否则在存在空值的情况下获取元组内的数据时,会报“超出索引”的异常。多次踩雷坑。
import cx_Oracleconnection = 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()--获取数据库所有记录列表
查询到的数据格式为列表:
多个元素的列表:
单个元素的列表:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文研究的主要是python通过elixir包操作mysql数据库的相关实例,具体如下。python操作数据库有很多方法,下面介绍elixir来操作数据库。el
目录(一)使用Workbench操作数据库①创建数据库②修改数据库③删除数据库④设置默认数据库(二)使用Workbench操作数据表①创建数据表②查看数据表③修
使用语言操作数据库是重中之重,如果一门语言你不懂得如何操作数据库,那么你还是没有学会这门语言。PHP操作数据库的方法并不难同时php的值还可以与JavaScri
前面说过怎样使用ArangoDB的Web,Shell和RestfulAPI来操作数据库,今天看一下怎样使用Python语言来操作ArangoDB数据库。要通过P
前言任何应用都离不开数据,所以在学习python的时候,当然也要学习一个如何用python操作数据库了。MySQLdb就是python对mysql数据库操作的模