Python从Oracle数据库中获取数据——fetchall(),fetchone(),fetchmany()函数功能分析
一、fetchall(),fetchone(),fetchmany()简单介绍
fetchall()函数,它的返回值是多个元组,即返回多个行记录,如果没有结果,返回的是()
2、fetchone()函数,它的返回值是单个的元组,也就是一行记录,如果没有结果,那就会返回None,每次向后抓取一条记录
3、 fetchmany()函数,返回多个元组,返回多条记录(row),需要指定具体返回多少个记录。如fetchmany(2) 返回两条记录,默认则为1
二、fetchall(),fetchone(),fetchmany()详细介绍
下图是我这次学习使用的数据截图:
然后我使用python连接到Oracle数据库,获取游标,编写sql语句。
import cx_Oracleconn = cx_Oracle.connect('yoyo', '123456', '127.0.0.1:1521/yoyo')# 使用cursor()方法获取操作游标cursor = conn.cursor() # 通过游标cur操作execute()方法可以写入纯sql语句s = cursor.execute("""select * from BRAND order by ID asc""")
下面进入正题,先使用fetchall()函数并查看执行结果。代码如下:
# fetchall()函数,它的返回值是多个元组,即返回多个行记录,如果没有结果,返回的是()result1 = s.fetchall()print(result1)
执行结果如下:
看到执行结果如我们预想的一样,按ID值升序排列获取全部5条记录,就像这个函数的名字一样,fetchall()就是抓取所有数据。
接着,我们再接着加入fetchone()函数,代码如图所示:
import cx_Oracle# 执行以上代码,如果没有产生错误,表明安装成功# 连接数据库,下面括号里内容根据自己实际情况填写conn = cx_Oracle.connect('yoyo', '123456', '127.0.0.1:1521/yoyo')# 使用cursor()方法获取操作游标cursor = conn.cursor()# 通过游标cur操作execute()方法可以写入纯sql语句s = cursor.execute("""select * from BRAND order by ID asc""")# fetchall()函数,它的返回值是多个元组,即返回多个行记录,如果没有结果,返回的是()result1 = s.fetchall()print(result1)# fetchone()函数,它的返回值是单个的元组,也就是一行记录,如果没有结果,那就会返回None,每次向后抓取一条记录result2 = s.fetchone()result3 = s.fetchone()print(result2)print(result3)
执行结果如下所示:
我们看到因为fetchall()已经把全部5条数据都抓取了,所以再使用fetchone()抓取数据,就会为空,和介绍中的功能完全符合,返回了None
这次我们注释掉fetchall()函数,再次执行如下代码:
import cx_Oracle# 执行以上代码,如果没有产生错误,表明安装成功# 连接数据库,下面括号里内容根据自己实际情况填写conn = cx_Oracle.connect('yoyo', '123456', '127.0.0.1:1521/yoyo')# 使用cursor()方法获取操作游标cursor = conn.cursor()# 通过游标cur操作execute()方法可以写入纯sql语句s = cursor.execute("""select * from BRAND order by ID asc""")# fetchall()函数,它的返回值是多个元组,即返回多个行记录,如果没有结果,返回的是()# result1 = s.fetchall()# print(result1)# fetchone()函数,它的返回值是单个的元组,也就是一行记录,如果没有结果,那就会返回None,每次向后抓取一条记录result2 = s.fetchone()result3 = s.fetchone()print(result2)print(result3)
执行结果如下所示:
我们看到这次fetchone()函数抓取到了数据,根据fetchone()函数的功能所说,它是每次返回一个元组,执行一次就向后抓取一次数据,所以执行两次的结果result2和result3获取到的是不同的值。
接着,我们在后面再加入fetchmany()函数,代码如图所示:
import cx_Oracle# 执行以上代码,如果没有产生错误,表明安装成功# 连接数据库,下面括号里内容根据自己实际情况填写conn = cx_Oracle.connect('yoyo', '123456', '127.0.0.1:1521/yoyo')# 使用cursor()方法获取操作游标cursor = conn.cursor()# 通过游标cur操作execute()方法可以写入纯sql语句s = cursor.execute("""select * from BRAND order by ID asc""")# fetchall()函数,它的返回值是多个元组,即返回多个行记录,如果没有结果,返回的是()# result1 = s.fetchall()# print(result1)# fetchone()函数,它的返回值是单个的元组,也就是一行记录,如果没有结果,那就会返回None,每次向后抓取一条记录result2 = s.fetchone()result3 = s.fetchone()print(result2)print(result3)# fetchmany()函数,返回多个元组,返回多条记录(row),需要指定具体返回多少个记录。如fetchmany(2) 返回两条记录,默认则为1result4 = s.fetchmany(3)print(result4)
执行结果如下图所示:
在代码中,fetchmany()函数填写的获取数据的条数为3,所以运行结果的最后一行是最后三条记录,一起被显示出来。值得注意的是,fetchmany()函数是接着fetchone()函数抓取数据的,并不是又从回到头开始抓取数据,这在编程时应该被注意。
以上是我的学习分享,有不对的地方敬请读者指正。
来源地址:https://blog.csdn.net/qq_28268527/article/details/128629153