zoukankan      html  css  js  c++  java
  • Python 处理数据库返回结果

    游标执行后返回的结果都只是数据,但是不带有列名标识。这里需要处理2个问题:

    • 将返回的数据映射到每一列上
    • 当返回的结果很大的时候,需要使用迭代器来提升性能。

    解决上面的2个问题,在python里面可以采用下面的2种方式来处理。

    1. 使用namedtuple 和 map object。
    2. 使用yield 和 zip。

    下面是示例代码:

    Result_From_DB


     

    需要注意几点:

    • 使用map和namedtuple的时候,游标要使用fetchall()方法。一次行取出所有结果,然后调用map方法将所有的数据map到Record object上。
    • 返回的map object可以调用for方法进行遍历。map object类似一个Record object列表。
    • namedtuple生成的对象,访问的时候是用dot来访问数据的。
    • 使用yield和dict zip返回的是iterator对象,这在性能上应该更有优势。
    • cur.fetchmany()返回的rowcount是有cursor.arraysize决定的。默认的是1,可以自行决定每次返回的数量。cur.fetchmany(size)
    • 使用yield和dict zip返回的iterator对象,每一个是一个dict对象。
  • 相关阅读:
    [状压DP][二分]JZOJ 3521 道路覆盖
    字符串操作
    练习: 判断一个数是否为小数
    Python 深浅拷贝
    编码
    python中的 == 和 is 的区别
    Python3 字典的增删改查
    Python3 列表的基本操作
    初识 Python
    方法的入门
  • 原文地址:https://www.cnblogs.com/herbert/p/3479349.html
Copyright © 2011-2022 走看看