예제 #1
0
    def handle(self, *args, **kwargs):
        fuzzyStatement("DELETE FROM asignatura_fuzzy")

        query = fuzzyQuery(DATA_AGG_Q, DATA_AGG_COLS)

        materia_actual = None
        data = {}
        for row in query:
            if row["codigo"] != materia_actual:
                self.do_insert(row["codigo"], data)
                materia_actual = row["codigo"]
                data = {}
            preg_dict = data.get(row["id_pregunta"], {})
            preg_dict[row["opcion"]] = row["count"]
            data[row["id_pregunta"]] = preg_dict

        self.do_insert(materia_actual, data)
예제 #2
0
    def handle(self, *args, **kwargs):
        fuzzyStatement("DELETE FROM asignatura_fuzzy")

        query = fuzzyQuery(DATA_AGG_Q, DATA_AGG_COLS)

        materia_actual = None
        data = {}
        for row in query:
            if row["codigo"] != materia_actual:
                self.do_insert(row["codigo"], data)
                materia_actual = row["codigo"]
                data = {}
            preg_dict = data.get(row["id_pregunta"], {})
            preg_dict[row["opcion"]] = row["count"]
            data[row["id_pregunta"]] = preg_dict

        self.do_insert(materia_actual, data)
예제 #3
0
    def do_insert(self, codigo, data):
        if codigo is None:
            return

        for id_p in (22, 24, 30):
            op = data.get(id_p, {})
            counts = (op.get('1', 0), op.get('2', 0), op.get('3', 0), op.get('4', 0), op.get('5', 0))
            total = sum(counts)
            if total == 0:
                print("Skipped {}".format(codigo))
                return
            else:
                poss = map(lambda x: float(x) / total, counts)
                max_poss = max(poss)
                poss = map(lambda x: 0.0 if x == 0 else x / max_poss, poss)
                data[id_p] = "{{f {}/1, {}/2, {}/3, {}/4, {}/5 }}".format(*poss)

        query = "INSERT INTO asignatura_fuzzy VALUES ('{}', {}, {}, {}, 'f')".format(
            codigo, data[24], data[22], data[30]
        )
        fuzzyStatement(query)
예제 #4
0
    def do_insert(self, codigo, data):
        if codigo is None:
            return

        for id_p in (22, 24, 30):
            op = data.get(id_p, {})
            counts = (op.get('1', 0), op.get('2', 0), op.get('3', 0),
                      op.get('4', 0), op.get('5', 0))
            total = sum(counts)
            if total == 0:
                print("Skipped {}".format(codigo))
                return
            else:
                poss = map(lambda x: float(x) / total, counts)
                max_poss = max(poss)
                poss = map(lambda x: 0.0 if x == 0 else x / max_poss, poss)
                data[id_p] = "{{f {}/1, {}/2, {}/3, {}/4, {}/5 }}".format(
                    *poss)

        query = "INSERT INTO asignatura_fuzzy VALUES ('{}', {}, {}, {}, 'f')".format(
            codigo, data[24], data[22], data[30])
        fuzzyStatement(query)