Пример #1
0
 def init(self):
     if self.is_cluster_mode:
         options = sql_router_sdk.SQLRouterOptions()
         options.zk_cluster = self.options.zk_cluster
         options.zk_path = self.options.zk_path
         options.request_timeout = self.options.request_timeout
         self.sdk = sql_router_sdk.NewClusterSQLRouter(options)
         if not self.sdk:
             logger.error(
                 "fail to init OpenMLDB sdk with zk cluster %s and zk path %s"
                 % (options.zk_cluster, options.zk_path))
             return False
         logger.info(
             "init OpenMLDB sdk done with zk cluster %s and zk path %s" %
             (options.zk_cluster, options.zk_path))
     else:
         options = sql_router_sdk.StandaloneOptions()
         options.host = self.options.host
         options.port = self.options.port
         options.request_timeout = self.options.request_timeout
         self.sdk = sql_router_sdk.NewStandaloneSQLRouter(options)
         if not self.sdk:
             logger.error(
                 "fail to init OpenMLDB sdk with host %s and port %s" %
                 (options.host, options.port))
             return False
         logger.info("init openmldb sdk done with host %s and port %s" %
                     (options.host, options.port))
     status = sql_router_sdk.Status()
     self.sdk.ExecuteSQL("SET @@execute_mode='online'", status)
     return True
Пример #2
0
 def dropDB(self, db):
     if not self.sdk:
         return False, "please init sdk first"
     status = sql_router_sdk.Status()
     if self.sdk.DropDB(db, status):
         return True, "ok"
     else:
         return False, status.msg
Пример #3
0
 def getRequestBuilder(self, db, sql):
     if not self.sdk:
         return False, "please init sdk first"
     status = sql_router_sdk.Status()
     row_builder = self.sdk.GetRequestRow(db, sql, status)
     if status.code != 0:
         return False, status.msg
     return True, row_builder
Пример #4
0
 def executeDDL(self, db, ddl):
     if not self.sdk:
         return False, "please init sdk first"
     status = sql_router_sdk.Status()
     if not self.sdk.ExecuteDDL(db, ddl, status):
         return False, status.msg
     else:
         self.sdk.RefreshCatalog()
         return True, "ok"
Пример #5
0
    def getJobLog(self, id):
        if not self.sdk:
            return False, "please init sdk first"

        status = sql_router_sdk.Status()

        log = self.sdk.GetJobLog(id, status)
        if status.code !=0:
            # TODO: Throw exception if get failure status
            return ""

        return log
Пример #6
0
    def getDatabases(self):
        if not self.sdk:
            return False, "please init sdk first"

        dbs = sql_router_sdk.VectorString()
        status = sql_router_sdk.Status()
        self.sdk.ShowDB(dbs, status)
        if status.code !=0:
            return False
        output_dbs = []
        for i in range(dbs.size()):
            output_dbs.append(dbs[i])
        return output_dbs
Пример #7
0
    def executeQueryParameterized(self, db, sql, row_builder):
        if not self.sdk:
            return False, "please init sdk first"

        if not row_builder:
            return False, "pealse init parameter row"

        status = sql_router_sdk.Status()
        rs = self.sdk.ExecuteSQLParameterized(db, sql, row_builder, status)
        if status.code != 0:
            return False, status.msg
        else:
            return True, rs
Пример #8
0
    def executeQuery(self, db, sql, row_builder = None):
        if not self.sdk:
            return False, "please init sdk first"

        status = sql_router_sdk.Status()
        if row_builder is not None:
            rs = self.sdk.ExecuteSQLRequest(db, sql, row_builder, status)
        else:
            rs = self.sdk.ExecuteSQL(db, sql, status)
        if status.code != 0:
            return False, status.msg
        else:
            return True, rs
Пример #9
0
 def executeInsert(self, db, sql, row_builder = None):
     if not self.sdk:
         return False, "please init sdk first"
     status = sql_router_sdk.Status()
     if row_builder is not None:
         if self.sdk.ExecuteInsert(db, sql, row_builder, status):
             return True, ""
         else:
             return False, status.msg
     else:
         if self.sdk.ExecuteInsert(db, sql, status):
             return True, ""
         else:
             return False, status.msg
Пример #10
0
    def executeSQL(self, db, sql, row_builder=None):
        """
        1. no row_builder: batch mode
        2. row_builder: request mode
        And if db, use this one, if not, use the db setting in sdk
        """
        if not self.sdk:
            return False, "please init sdk first"

        status = sql_router_sdk.Status()
        if row_builder is not None:
            # TODO(hw): must set db in request mode now, fix later
            rs = self.sdk.ExecuteSQLRequest(db, sql, row_builder, status)
        elif db:
            rs = self.sdk.ExecuteSQL(db, sql, status)
        else:
            # if no db specific in here, use the current db in sdk
            rs = self.sdk.ExecuteSQL(sql, status)
        if status.code != 0:
            return False, status.msg
        else:
            return True, rs
Пример #11
0
 def doBatchRowRequest(self, db, sql, commonCol, parameters):
     ok, requestRow = self.getRequestBuilder(db, sql)
     if not ok:
         return ok, "get request builder fail"
     schema = requestRow.GetSchema()
     commonCols = sql_router_sdk.ColumnIndicesSet(schema)
     count = schema.GetColumnCnt()
     commnColAddCount = 0
     for i in range(count):
         colName = schema.GetColumnName(i)
         if colName in commonCol:
             commonCols.AddCommonColumnIdx(i)
             commnColAddCount+=1
     if commnColAddCount != len(commonCol):
         return False, "some common col is not in table schema"
     requestRowBatch = sql_router_sdk.SQLRequestRowBatch(schema, commonCols)
     if requestRowBatch is None:
         return False, "generate sql request row batch fail"
     if isinstance(parameters, dict):
         ok, msg = self._append_request_row(requestRow, schema, parameters)
         if not ok:
             return ok, msg
         requestRowBatch.AddRow(requestRow)
     else:
         for d in parameters:
             ok, msg = self._append_request_row(requestRow, schema, d)
             if not ok:
                 return ok, msg
             requestRowBatch.AddRow(requestRow)
             ok, requestRow = self.getRequestBuilder(db, sql)
             if not ok:
                 return ok, "get request builder fail"
     status = sql_router_sdk.Status()
     rs = self.sdk.ExecuteSQLBatchRequest(db, sql, requestRowBatch, status)
     if status.code != 0:
         return False, status.msg
     return True, rs
Пример #12
0
 def callProc(self, db, sp, rq):
     status = sql_router_sdk.Status()
     rs = self.sdk.CallProcedure(db, sp, rq, status)
     if status.code != 0:
         return False, status.msg
     return True, rs
Пример #13
0
 def getRowBySp(self, db, sp):
     status = sql_router_sdk.Status()
     row_builder = self.sdk.GetRequestRowByProcedure(db, sp, status)
     if status.code != 0:
         return False, status.msg
     return True, row_builder