server/sources/native.py
changeset 2618 ff9b0d5bd884
parent 2611 0557f25682da
child 2619 535bc210f799
equal deleted inserted replaced
2617:89c62b855f2e 2618:ff9b0d5bd884
   430         else:
   430         else:
   431             attrs = {'eid_from': subject, 'eid_to': object}
   431             attrs = {'eid_from': subject, 'eid_to': object}
   432             sql = self.sqlgen.delete('%s_relation' % rtype, attrs)
   432             sql = self.sqlgen.delete('%s_relation' % rtype, attrs)
   433         self.doexec(session, sql, attrs)
   433         self.doexec(session, sql, attrs)
   434 
   434 
   435     def doexec(self, session, query, args=None):
   435     def doexec(self, session, query, args=None, rollback=True):
   436         """Execute a query.
   436         """Execute a query.
   437         it's a function just so that it shows up in profiling
   437         it's a function just so that it shows up in profiling
   438         """
   438         """
   439         cursor = session.pool[self.uri]
   439         cursor = session.pool[self.uri]
   440         if server.DEBUG & server.DBG_SQL:
   440         if server.DEBUG & server.DBG_SQL:
   443             # str(query) to avoid error if it's an unicode string
   443             # str(query) to avoid error if it's an unicode string
   444             cursor.execute(str(query), args)
   444             cursor.execute(str(query), args)
   445         except Exception, ex:
   445         except Exception, ex:
   446             self.critical("sql: %r\n args: %s\ndbms message: %r",
   446             self.critical("sql: %r\n args: %s\ndbms message: %r",
   447                           query, args, ex.args[0])
   447                           query, args, ex.args[0])
   448             try:
   448             if rollback:
   449                 session.pool.connection(self.uri).rollback()
   449                 try:
   450                 self.critical('transaction has been rollbacked')
   450                     session.pool.connection(self.uri).rollback()
   451             except:
   451                     self.critical('transaction has been rollbacked')
   452                 pass
   452                 except:
       
   453                     pass
   453             raise
   454             raise
   454         return cursor
   455         return cursor
   455 
   456 
   456     def doexecmany(self, session, query, args):
   457     def doexecmany(self, session, query, args):
   457         """Execute a query.
   458         """Execute a query.