Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.os.vms    |    DEC's VAX* line of computers & VMS.    |    264,096 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 262,919 of 264,096    |
|    Lawrence D'Oliveiro to All    |
|    Re: VMS x86-64 database server    |
|    30 Jul 25 03:02:15    |
   
   From: ldo@nz.invalid   
      
   On Tue, 29 Jul 2025 10:02:00 -0400, Arne Vajhøj wrote:   
      
   > def map_list_rel_to_obj(data):   
   > res = []   
   > lastorderid = -1   
   > for row in data:   
   > if row[0] != lastorderid:   
   > res.append(myorder(row[0], row[1], row[2]))   
   > lastorderid = row[0]   
   > res[-1].orderlines.append(orderline(row[3], row[4], row[5], row[6]))   
   > return res   
      
   Here’s a somewhat more general way of doing it:   
      
    def group_query(db, table, field_names, cond, break_field) :   
    "iterates over records in table, grouped by values of break_field." \   
    " Note that table could be a join on multiple tables."   
    entries_iter = db_iter \   
    (   
    db,   
    "select %(fields)s from %(table)s where %(cond)s order by   
   %(break)s"   
    %   
    {   
    "fields" : ", ".join(field_names),   
    "table" : table,   
    "cond" : cond,   
    "break" : break_field,   
    }   
    )   
    last_break_id = subbreak = None   
    while True :   
    entry = next(entries_iter, None)   
    if entry != None :   
    entry = dict(zip(field_names, entry))   
    this_break_id = entry[break_field]   
    #end if   
    if entry == None or this_break_id != last_break_id :   
    if subbreak != None :   
    yield subbreak   
    if entry == None :   
    break   
    last_break_id = this_break_id   
    subbreak = []   
    #end if   
    subbreak.append(entry)   
    #end while   
    #end group_query   
      
   (See my posting elsewhere for the definition of the “db_iter”   
   function.)   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca