cr.execute('BEGIN IMMEDIATE')
try:
  rowid = cr.execute('select rowid from element_attribute_values where 
element=? and attribute=? and value=?', (element, attribute, 
value)).fetchone()[0]
  cr.execute('update element_attribute_values set count=count+1 where rowid=?', 
(rowid,))
except:
  cr.execute('insert into element_attribute_values values (?, ?, ?, 1)', 
(element, attribute, value))
cr.execute('COMMIT')


could be replaced by (the below will probably be faster also):

cr.execute('BEGIN IMMEDIATE')
cr.execute('insert or ignore into element_attribute_values values (?, ?, ?, 
0)', (element, attribute, value))
cr.execute('update element_attribute_values set count=count+1 where element=? 
and attribute=? and value=?', (element, attribute, value))
cr.execute('COMMIT')


same caveat that if you want more speed you will have to move your transaction 
out to cover more updates.





Reply via email to