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对象。
  • 相关阅读:
    harbor无法登陆解决
    k8s中使用harbor
    harbor扩容
    harbor设置开机自启
    设置开机自启
    关Java的内存模型(JMM)
    多线程相关概念
    多线程(JDK1.5的新特性互斥锁)
    synchronized关键字
    【异常】redis.clients.jedis.exceptions.JedisDataException: ERR unknown command 'PSETEX'
  • 原文地址:https://www.cnblogs.com/herbert/p/3479349.html
Copyright © 2011-2022 走看看