Python 处理数据库返回结果

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

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

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

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

下面是示例代码:sql

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对象。
相关文章
相关标签/搜索