Factory pattern again

Steve Holden steve at holdenweb.com
Fri Jul 27 13:00:16 EDT 2007


Mike Howarth wrote:
> Having overcome my first hurdle with the factory pattern, I've now hit
> another stumbling block
> 
> At the moment I'm trying to return around 2000 records from a db and load up
> the relevant product object, what I've found is this is running extremely
> slowly (> 20mins), the db is normalized and indexes exist.
> 
> Can anyone advise on how best I could speed this up?
> 
>    def getWebRangeProducts(self):
>         if self.c.connected:
>             cu = self.c.cursor #create the cursor
>             sql = "SELECT type, code FROM products"
>             cu.execute(sql)
>             if cu.rowcount > 0:
>                 rows = cu.fetchall()
>                 for row in rows: 
>                    self.loadProduct(row[0].strip(),row[1].strip())
>                 return self.products
>             
>     def loadProduct(self,type,product_code):
>         print type + ":" + product_code
>         if type == 'I':
>             try:
>                 product = factory('Item', product_code)
>                 self.products.append(product)
>             except:
>                 print 'problem occured:' + type + ':' + product_code
>         elif type == 'S':
>             try:
>                 item_set = factory('Set', product_code)
>                 item_set.getItems()
>                 self.products.extend(item_set.getItems())
>             except:
>                 print 'problem occured:' + type + ':' + product_code
>         else:
>             pass
> 
There's definitely *something* wrong - this shouldn't take 20 seconds, 
let alone 20 minutes.

How frequently do you see the

     print type + ":" + product_code

statement producing output? In other words, is the slowness distributed 
across the  task, or is there a delay at the beginning or end? Are the 
Set and Item classes exactly as shown in your last post?

regards
  Steve

PS: Please put your answer at the bottom, not the top!
-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC/Ltd           http://www.holdenweb.com
Skype: holdenweb      http://del.icio.us/steve.holden
--------------- Asciimercial ------------------
Get on the web: Blog, lens and tag the Internet
Many services currently offer free registration
----------- Thank You for Reading -------------




More information about the Python-list mailing list