Beispiel #1
0
    def process(self, request):
        start_time = time.time()

        client = DBClient()
        client.connect()

        req = db_pb2.DBRequest()
        res = db_pb2.DBResponse()
        req.ParseFromString(request)
        res.seq_id = req.seq_id

        status = -1
        for query in req.query:
            logger.debug("process query[sql=%s]" % query)
            result = res.result.add()
            if query.type == Query.SELECT:
                status = self._select(client, query, result)
            elif query.type == Query.INSERT:
                status = self._insert(client, query, result)
            elif query.type == Query.UPDATE:
                status = self._update(client, query, result)
            elif query.type == Query.DELETE:
                status = self._delete(client, query, result)

            if status != 0:
                break

        client.commit()

        res.status = status
        consume_time = int((time.time() - start_time) * 1000)
        logger.notice("Query[req=%s][res=%s][consume=%d ms]" % (req, res, consume_time))

        return res.SerializeToString()