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對象。
相關文章
相關標籤/搜索