2013-03-28 14 views
5

Jaka jest różnica między tymi pobierania.? proszę podać mi przykłady stronie odniesienia, aby uzyskać wyraźny idea.still jestem mylić z nimProszę wyjaśnić te typy Python Fetch

res = cr.dictfetchall() 

res2 = cr.dictfetchone() 

res3 = cr.fetchall() 

res4 = cr.fetchone() 

cr jest obecny rząd, od kursora bazy danych (OpenERP 7)

ex:

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

co to jest 'cr' w twoim przykładowym kodzie? –

+0

@olly_uk: post edytowany przyjaciel –

+3

[Istnieje pełny opis każdej metody w PEP-249] (http://www.python.org/dev/peps/pep-0249/#cursor-methods) –

Odpowiedz

16

cr.dictfetchall() daje wszystkie rekordy w postaci listy ** ** słownika zawierającego klucz, wartość.

cr.dictfetchone() działa w taki sam sposób, jak cr.dictfetchall(), z tym że zwraca tylko pojedynczy rekord.

cr.fetchall() poda wszystkie pasujące rekordy w postaci listy tupple.

cr.fetchone() działa w taki sam sposób, jak cr.fetchall(), z tym że zwraca tylko pojedynczy rekord.

W swojej danego zapytania, jeśli używasz:

  1. cr.dictfetchall() daje [{'reg_no': 123},{'reg_no': 543},].
  2. cr.dictfetchone() da Ci {'reg_no': 123}.
  3. cr.fetchall() podaje "[(123), (543)]".
  4. cr.fetchone() poda ci "(123)".
+0

dzięki arya ..u pomógł mi wiele razy :-) –

+1

@AnneMary Dzięki za komplement. –

Powiązane problemy