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,924 of 264,096    |
|    =?UTF-8?Q?Arne_Vajh=C3=B8j?= to Lawrence D'Oliveiro    |
|    Re: VMS x86-64 database server    |
|    31 Jul 25 15:21:36    |
   
   From: arne@vajhoej.dk   
      
   On 7/29/2025 11:02 PM, Lawrence D'Oliveiro wrote:   
   > 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   
      
   That does not stuff data into an object model - it is still just   
   a list and dict approach.   
      
   Arne   
      
   --- 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