Example #1
0
 def _do_array_ops(self):
     items = sorted(self.array_ops.items())
     for (operation, row_schema), rows in items:
         r = list_values(rows)
         params = []
         datatypes = [self.inputsizes[name] for name in row_schema.split()]
         for i, column in enumerate(zip(*r)):
             params.append(self.cursor.arrayvar(datatypes[i], list(column)))
         self.cursor.execute(operation, tuple(params))
Example #2
0
 def _do_array_ops(self):
     items = sorted(self.array_ops.items())
     for (operation, row_schema), rows in items:
         r = list_values(rows)
         params = []
         datatypes = [self.inputsizes[name] for name in row_schema.split()]
         for i, column in enumerate(zip(*r)):
             params.append(self.cursor.arrayvar(datatypes[i], list(column)))
         self.cursor.execute(operation, tuple(params))
Example #3
0
    def _do_inserts(self):
        # pylint:disable=too-many-locals
        def replace_var(match):
            name = match.group(1)
            new_name = '%s_%d' % (name, rownum) # pylint:disable=undefined-loop-variable
            if name in self.inputsizes:
                stmt_inputsizes[new_name] = self.inputsizes[name]
            params[new_name] = row[name]
            return ':%s' % new_name

        items = sorted(self.inserts.items())
        for (_command, header, row_schema, _), rows in items:
            stmt_inputsizes = {}

            if len(rows) == 1:
                # use the single insert syntax
                row = list_values(rows)[0]
                stmt = "INSERT INTO %s VALUES (%s)" % (header, row_schema)
                for name in self.inputsizes:
                    if name in row:
                        stmt_inputsizes[name] = self.inputsizes[name]
                if stmt_inputsizes:
                    self.cursor.setinputsizes(**stmt_inputsizes)
                self.cursor.execute(stmt, row)

            else:
                # use the multi-insert syntax
                parts = []
                params = {}
                for rownum, row in enumerate(rows.values()):
                    mod_row = oracle_rowvar_re.sub(replace_var, row_schema)
                    parts.append("INTO %s VALUES (%s)" % (header, mod_row))


                stmt = "INSERT ALL\n%s\nSELECT * FROM DUAL" % '\n'.join(parts)
                if stmt_inputsizes:
                    self.cursor.setinputsizes(**stmt_inputsizes)
                self.cursor.execute(stmt, params)
Example #4
0
    def _do_inserts(self):
        # pylint:disable=too-many-locals
        def replace_var(match):
            name = match.group(1)
            new_name = '%s_%d' % (name, rownum)  # pylint:disable=undefined-loop-variable
            if name in self.inputsizes:
                stmt_inputsizes[new_name] = self.inputsizes[name]
            params[new_name] = row[name]
            return ':%s' % new_name

        items = sorted(self.inserts.items())
        for (_command, header, row_schema, _), rows in items:
            stmt_inputsizes = {}

            if len(rows) == 1:
                # use the single insert syntax
                row = list_values(rows)[0]
                stmt = "INSERT INTO %s VALUES (%s)" % (header, row_schema)
                for name in self.inputsizes:
                    if name in row:
                        stmt_inputsizes[name] = self.inputsizes[name]
                if stmt_inputsizes:
                    self.cursor.setinputsizes(**stmt_inputsizes)
                self.cursor.execute(stmt, row)

            else:
                # use the multi-insert syntax
                parts = []
                params = {}
                for rownum, row in enumerate(rows.values()):
                    mod_row = oracle_rowvar_re.sub(replace_var, row_schema)
                    parts.append("INTO %s VALUES (%s)" % (header, mod_row))

                stmt = "INSERT ALL\n%s\nSELECT * FROM DUAL" % '\n'.join(parts)
                if stmt_inputsizes:
                    self.cursor.setinputsizes(**stmt_inputsizes)
                self.cursor.execute(stmt, params)