This can be used to stage multiple commands and roll back the transaction if an error occurs. This is useful
            if you want to remove multiple records in multiple tables for one entity but do not want the deletion to occur
            if the entity is tied to table not specified in the list of commands. Performing this as a transaction avoids
            the situation where the records are partially removed. If do_commit is false, the entire transaction is cancelled.

def run_transaction(self, command_list, do_commit=True):
        '''This can be used to stage multiple commands and roll back the transaction if an error occurs. This is useful
            if you want to remove multiple records in multiple tables for one entity but do not want the deletion to occur
            if the entity is tied to table not specified in the list of commands. Performing this as a transaction avoids
            the situation where the records are partially removed. If do_commit is false, the entire transaction is cancelled.'''

        pass
        # I decided against creating this for now.
        # It may be more useful to create a stored procedure like in e.g. _create_protein_deletion_stored_procedure
        # in the DDGadmin project and then use callproc

        for c in command_list:
            if c.find(";") != -1 or c.find("\\G") != -1:
                # Catches *some* injections
                raise Exception("The SQL command '%s' contains a semi-colon or \\G. This is a potential SQL injection." % c)
        if do_commit:
            sql = "START TRANSACTION;\n%s;\nCOMMIT" % "\n".join(command_list)
        else:
            sql = "START TRANSACTION;\n%s;" % "\n".join(command_list)
        #print(sql)
        return