示例#1
0
class QueryUtils(object):
    def __init__(self, logger=None, benchmark=None):
        self.logger = logger
        self.benchmark = benchmark
        if self.benchmark is None and logger:
            self.benchmark = Benchmark(self.logger)

    def debug(self, msg):
        self.logger and self.logger.debug(msg)

    def start_mark(self, message):
        self.benchmark and self.benchmark.start_mark(message)

    def stop_mark(self, ):
        self.benchmark and self.benchmark.stop_mark()

    def execute_sql(self, sql, args, close_cursor=True, fetch_row=False):
        self.debug("execute_sql:%s, args:%s" % (sql, args))

        select_result = None
        if isinstance(args, dict):
            sql, args = self.replace_sql_parameter(sql, args)
            args = ()
            self.debug("parsed params:%s, args:%s" % (sql, args))

        try:
            from django.db import connection, transaction
            self.start_mark("execute_sql")

            cursor = connection.cursor()
            # Data modifying operation - commit required
            cursor.execute(sql, args)
            transaction.commit_unless_managed()
            if fetch_row and sql.lower().strip().startswith("select"):
                rs = RawSQLResult(sql)
                select_result = rs.fetch_from_cursor(cursor)

            if close_cursor: cursor.close()
            self.stop_mark()
        except Exception, e:
            if self.logger is not None:
                self.logger.exception(e)
            raise e

        if fetch_row:
            return select_result
        else:
            return cursor
示例#2
0
class QueryUtils(object):
    def __init__(self, logger=None, benchmark=None):
        self.logger = logger
        self.benchmark = benchmark
        if self.benchmark is None and logger:
            self.benchmark = Benchmark(self.logger)
        
    def debug(self, msg):
        self.logger and self.logger.debug(msg)
    
    def start_mark(self, message):
        self.benchmark and self.benchmark.start_mark(message)
    
    def stop_mark(self, ):
        self.benchmark and self.benchmark.stop_mark()
    
    def execute_sql(self, sql, args, close_cursor=True, fetch_row=False):
        self.debug("execute_sql:%s, args:%s" % (sql, args))
        
        select_result = None
        if isinstance(args, dict):
            sql, args = self.replace_sql_parameter(sql, args)
            args = ()
            self.debug("parsed params:%s, args:%s" % (sql, args))
        
        try:
            from django.db import connection, transaction
            self.start_mark("execute_sql")
            
            cursor = connection.cursor()
            # Data modifying operation - commit required
            cursor.execute(sql, args)
            transaction.commit_unless_managed()
            if fetch_row and sql.lower().strip().startswith("select"):
                rs = RawSQLResult(sql)
                select_result = rs.fetch_from_cursor(cursor)
                            
            if close_cursor: cursor.close()
            self.stop_mark()
        except Exception, e:
            if self.logger is not None:
                self.logger.exception(e)
            raise e
        
        if fetch_row: 
            return select_result
        else:
            return cursor
示例#3
0
 def __init__(self, logger=None, benchmark=None):
     self.logger = logger
     self.benchmark = benchmark
     if self.benchmark is None and logger:
         self.benchmark = Benchmark(self.logger)
示例#4
0
 def __init__(self, logger=None, benchmark=None):
     self.logger = logger
     self.benchmark = benchmark
     if self.benchmark is None and logger:
         self.benchmark = Benchmark(self.logger)