开发者社区> 问答> 正文

cx_Oracle:如何迭代结果集?

有几种方法可以迭代结果集。各自的权衡是什么?

展开
收起
游客6qcs5bpxssri2 2019-09-07 21:43:46 729 0
1 条回答
写回答
取消 提交回答
  • 规范的方法是使用内置的游标迭代器。

    curs.execute('select * from people')

    for row in curs:

    print row
    

    您可以使用fetchall()一次获取所有行。

    for row in curs.fetchall():

    print row
    

    使用它可以很方便地创建一个包含返回值的Python列表:

    curs.execute('select first_name from people')

    names = [row[0] for row in curs.fetchall()]

    这对于较小的结果集很有用,但如果结果集很大,则会产生不良副作用。

    您必须等待整个结果集返回到客户端进程。

    您可能会在客户端占用大量内存来保存构建列表。

    Python可能需要一段时间来构建和解构您将立即丢弃的列表。

    如果您知道结果集中返回了一行,则可以调用fetchone()以获取单行。

    curs.execute('select max(x) from t') maxValue = curs.fetchone()[0] 最后,您可以遍历结果集,一次获取一行。通常,使用迭代器进行此操作没有特别的优势。

    row = curs.fetchone() while row: print row row = curs.fetchone()

    2019-09-07 21:44:23
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载