equal
deleted
inserted
replaced
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. |