2013-03-28 53 views
5

這些提取有什麼區別? 請給我參考網站的例子來獲得清晰idea.still我與它請解釋這些Python提取類型

res = cr.dictfetchall() 

res2 = cr.dictfetchone() 

res3 = cr.fetchall() 

res4 = cr.fetchone() 

CR迷惑是當前行,從數據庫光標(OpenERP的7)

例如:

def _max_reg_no(self, cr, uid, context=None): 
    cr.execute(""" 
    select register_no as reg_no 
    from bpl_worker 
    where id in (select max(id) from bpl_worker) 
    """) 
    res = cr.fetchone()[0] 
    print (res) 
    return res 
+3

你的示例代碼中的「cr」是什麼? – 2013-03-28 10:50:51

+0

@olly_uk: 張貼編輯好友 – 2013-03-28 10:54:25

+3

[有關PEP-249中每種方法的完整說明](http://www.python.org/dev/peps/pep-0249/#cursor-methods) – 2013-03-28 10:57:11

回答

16

cr.dictfetchall()會給你一個包含鍵,值字典的名單** **的形式中的所有匹配的記錄。

cr.dictfetchone()以與cr.dictfetchall()相同的方式工作,除了它只返回單個記錄。

cr.fetchall()會給你所有匹配記錄的形式tupple列表。

cr.fetchone()以與cr.fetchall()相同的方式工作,除了它只返回單個記錄。

在你定的查詢,如果你使用:

  1. cr.dictfetchall()會給你[{'reg_no': 123},{'reg_no': 543},]
  2. cr.dictfetchone()會給你{'reg_no': 123}
  3. cr.fetchall()會給你'[(123),(543)]'。
  4. cr.fetchone()會給你'(123)'。
+0

謝謝arya ..u幫了我很多次:-) – 2013-03-28 11:04:56

+1

@安妮瑪麗感謝您的讚美。 – 2013-03-28 11:21:32