home bbs files messages ]

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