Conexión De MySQL en Matlab


Ayuda para que siempre encuentres lo que buscas!

Conexión De MySQL en Matlab

Conocimientos previos:
Necesitamos :
  • Aplicación de conexión a MySql por medio de conector Connector/ODBC
  • Pagina de descarga: http://www.mysql.com/downloads/connector/
  • Tener activo la aplicación “Orígenes de datos ODBC”
  • Entorno de trabajo Win 7 (para este tutorial, funciona también con Xp)
  • Matlab 2009 o 2010a/b
Entorno de Problema

Queremos conectar una base de datos del tipo Mysql a Matlab, para poder accesar a ella para consultas y también poder ingresarles valores  para agregar mas datos.

Resolucion del Problema

A manera de Indice de contenidos veremos esto

  • Instalacion de Aplicaciones ODBC
  • Configuracion de nuestra primera base con el conector ODBC
  • Conexión con Matlab, con el Wizard “querybuilder”
  • Creacion de nuestra primera consulta a la base de datos con “querybuilder”
  • Cracion de nuestra primera inserción de datos a base con “querybuilder”
  • Generacion de nuestros archivos *.m
  • Implementación a manera de ejemplo: Calculadora que guarda resultados en DB MySql
Instalacion de Aplicaciones ODBC:

Esta aplicación esta en el repositorio de MySql.com que es una herramienta para poder conectar esta base de datos (MySql) a cualquier entorno de programación sin necesidad de entrar de lleno a un intrincado proceso de manipulación de bases de datos.

Primero descargamos el archivo de la solución planteada:

Figura 1: http://www.mysql.com/downloads/connector/

Esto os dara un ejecutable llamado “mysql-connector-odbc-5.1.8-winx64” o “mysql-connector-odbc-5.1.8-winx32” según el que sea para sus procesador 64bit o 32bit según la versión que este en ese momento deberá ser esta o superior a la 5.1.8. procedemos a instalarlo

Figura 2

Figura 3

Figura 4

Configuracion de nuestra primera base con el conector ODBC

Al terminar instalación tendremos nuestro conector en el repositorio de window. Ahora procedemos a configurarlo, entrando a

  • Inicio
  • Panel de control
  • Todos los elementos de Panel de control ( si la vista no esta completa en panel de control)
  • Herramientas administrativas
  • Orígenes de datos ODBC

Figura 5

Figura 6

Antes de entrar a ella, debes saber que tienes que tener corriendo los 2 servicios de Xammp, Apache y Mysql(figura 7), como aver creado tu primera base de datos, para nuestro ejemplo tenemos creado una base de datos llamada “totales” la cual posee 5 columnas (figura 8)

  • Id
  • Suma
  • Resta
  • Multiplicación
  • Division

Las que nos servirán para guardar resultados de estas operaciones

Figura 7

Figura 8

Teniendo esto en cuenta vamos a el apartado antes dicho (Panel de control\Todos los elementos de Panel de control\Herramientas administrativas), entramos a “Orígenes de datos ODBC”

Ahí seguimos estos pasos:

  • Pestaña DSN Usurio
  • Click botón Agregar ( si os dais cuenta tenemos MySQL ODBC 5.1 ahí)
  • Seleccionar “MySQL ODBC5.1 Driver” (figura 9)
  • Poner finalizar
  • Te saldara otra ventana (figura 10)
    • Aquí debes ingresar
    • Data Source name: el nombre de tu servidor donde alojas las paginas (este nombre es un referencia, puedes poner cualquiera, pero este nombre sera reconocido por los entornos de programacion y no el de tu base de Mysql)
    • User: el usuario con que quieres accesar a la base
    • Password: la contraseña si tiene este usuario
    • En la casilla database debes de elegir tu base de datos, pues por cada conexion que añadas solamente una base sera reconocida.

Existe en esta misma ventana (figura 10) otra casilla llamada “database” esta te listara todas las bases de datos  que contenga este servidor y por supuesto aparecerá la tuya creada, dale a test y si todo a salido bien te lo indicara con éxito!

Figura 9

Figura 10

Conexión con Matlab, con el Wizard “querybuilder”

Si todo a salido bien tendrá tu conexión con MySQL totalmente limpia y sin problemas, ahora para que tengas la opción de interactuar con ella en MATLAB este tiene una serie de toolbox que te ayudaran en este sentido. Pero nosotros hablaremos del “querybuilder” (figura 11) este es una aplicación que sale en modo grafico en el entorno de trabajo de matlab.

  • Entra al entorno de matlab
  • Teclea:  querybuilder

Figura 11

Si os dai cuenta saldrá ya nuestro servidor listado, si no es asi entonces la configuración anterior donde administrábamos nuestra base por medio del conector fallo.

Rapidamente

  • Data operation: Select, para pedir info de la base y Insert, para insertar algún valor
  • Data source: la ubicación de nuestras bases de datos que utilizan los conectores ODBC
  • Catalog: lista las tablas que contiene esta base de datos seleccionada en DATA SOURCE
  • Schema: si tiene alguna logia especial
  • Tables:  los contenidos en cada uno de estas bases que existen en catalog
  • Fields: los contenidos en cada una de las Tables
  • Advanced Query option: cosas mas avanzadas para la gestión de datos
  • Sql Statement: nos da el comando para trabajarlo desde consola de matlab
  • MATLAB workspace variable: este nos sirve para asignar una variable de retorno después de solicitar una búsqueda en la base de datos y si esta en opción insert sirve para ingresar desde consola de Matlab un valor determinado partiendo de una variable creada anteriormente en matlab.
  • Data: mira todas las variables creadas en el entorno Matlab.
Creacion de nuestra primera consulta a la base de datos con “querybuilder”

Querybuilder es un entorno grafico en matlab que nos ayuda muchísimo para trabajar con las bases de datos, no solo sirve para Mysql, sino para cualquier otra que este instalada correctamente en los conectores ODBC

Bueno como lo mencionábamos tenemos en este servidor una base llamada totales que contiene un campo llamado operaciones, la cual contiene 5 columas, id, suma, resta, multiplicación y división, las cuales contendrán los resultados de estas operación realizadas en el entorno Matlab (figura 12) esto lo veremos si selecionamos nuestro servidor

Figura12

Nuestra base esta casi limpia, solo el campo resta tiene un valor el “1”, entonces vamos a buscarlo

  • Seleccionamos nuestro servidor (127.0.0.1)
  • Selecionamos nuestra lista de bases y buscamos la base “totales”(nosotros no lo hacemos porque esta como default configurada)
  • Selecionamos nuestra tabla (operaciones)
  • Selecionamos en nuestra field (resta)

Esto creara en el espacio SQL Statemnet un código para ingreso en consola matlab, nosotros debemos de asignar una variable de retorno o dicho de otra manera una variable donde guardaremos lo que busque de la base, le pondremos “Var1” por ejemplo, luego buscamos el botón “Execute”, esto crea la variable Var1, hace la búsqueda en la base, exactamente en resta y guarda todo lo que encuentra ahí (todos los datos de esa pila) en la variable “Var1” la cual aparecerá en “workspace variable” en esta misma ventana, para ver lo que trajo solo hay que darle clik encima de esa variable creada y veras el contenido que trajo de la base de datos.( Figura 13 )

Figura 13

Cracion de nuestra primera inserción de datos a base con “querybuilder”

Al igual que como en una búsqueda se utilizara este entorno grafico, la variante será que en “Data operation” se cambia de “Select” a “Insert” esto anulara algunas opciones de la pantalla, dejando solamente las necesarias para ingresar datos a la base.

Bamos a ingresar u numero, el  “4” a la base de datos en la casilla resta, la misma que utilizamos en el tema anterior y que solo contenia el numero “1” dentro de ella.

  • Crear una variable en en el entorno de matlab (en consola) y grabarle el  numero que querrais, a nuestro ejemplo 4
    • export_data = {4};
  • esta variable “export_data” se copia en el apartado MATLAB Workspace variable

Si os dais cuenta también nos proporciona un código para que podamos ingresarlo en consola, pues solo nos quedaría ponerle al botón Execute y este programin nos hara el favor de subirlo a nuestra base de datos. Ahora solo nos quedaría buscarlo y verificar si lo a hecho bien. Recordad que debéis primero elegir de nuevo el servidor y el lugar donde quereis los datos a guardar y si os pregunta si os guarda el dato anterio decidle que no y limpiara toda vairable dentro de esta ventana. Primero pones la variable creada y luego le das en execute. (figura 14)

Figura 14

Generacion de nuestros archivos *.m

Que lindo todo lo que hace el entorno grafico de manipulación de base de datos, pero y como lo convertimos a un ejecutable para matlab, pues sencillo, el  mismo entorno de lo deja hacer y te lo crea desde una de sus opciones.

  • Opción “Query”
  • Click en “Generate M-File”

y de asi te hable el editor de instrucciones con las configuraciones y todo para accesar a la instrucción que pusiste. Osea si realizaste una búsqueda, al hacer esta opción te generara el código a una búsqueda y si lo haz hecho para una inserción de datos pues ese código genereara, pero eso es bueno, pues entenderas cuales son las variantes de queda petición y lo que realmente no puede dejar de ir en el código. (figura 15)

figura 15

estos codigos a partir de que tengas una base de datos como la de nuestro ejemplo.

código de Busqueda:

% Set preferences with setdbprefs.

s.DataReturnFormat = ‘cellarray’;

s.ErrorHandling = ‘store’;

s.NullNumberRead = ‘NaN’;

s.NullNumberWrite = ‘NaN’;

s.NullStringRead = ‘null’;

s.NullStringWrite = ‘null’;

s.JDBCDataSourceFile = »;

s.UseRegistryForSources = ‘yes’;

s.TempDirForRegistryOutput = ‘C:\Users\ADMINI~1\AppData\Local\Temp’;

s.DefaultRowPreFetch = ‘10000’;

setdbprefs(s)

% Make connection to database.  Note that the password has been omitted.

% Using ODBC driver.

conn = database(‘127.0.0.1′,»,’password’);

% Read data from database.

e = exec(conn,’SELECT ALL resta FROM operaciones’);

e = fetch(e);

close(e)

% Assign data to output variable.

a = e.Data

% Close database connection.

close(conn)

código de inserción teniendo una variable llamada export_data con algún valor

% Set preferences with setdbprefs.

s.DataReturnFormat = ‘cellarray’;

s.ErrorHandling = ‘store’;

s.NullNumberRead = ‘NaN’;

s.NullNumberWrite = ‘NaN’;

s.NullStringRead = ‘null’;

s.NullStringWrite = ‘null’;

s.JDBCDataSourceFile = »;

s.UseRegistryForSources = ‘yes’;

s.TempDirForRegistryOutput = ‘C:\Users\ADMINI~1\AppData\Local\Temp’;

s.DefaultRowPreFetch = ‘10000’;

setdbprefs(s)

% Make connection to database.  Note that the password has been omitted.

% Using ODBC driver.

conn = database(‘127.0.0.1′,»,’password’);

% Write data to database.

insert(conn,’operaciones’,{‘resta’},export_data)

% Close database connection.

close(conn)

Implementación a manera de ejemplo: Calculadora que guarda resultados en DB MySql


4 comentarios en “Conexión De MySQL en Matlab

  1. interesante el post y sobre todo en español.
    me quede con las ganas de ver como implementas la calculadora. Para darme idea de como solucionar mi problema

    quiero pasar datos de matlab a access, el procedimiento es parecido, pero no se como puedo usar el querybuilder dentro de una guide, solo quiero insertar datos.

    La guide que estoy realizando me lee datos de excel, los procesa y me da resultado en celdas (cell arrays), manualmente puedo pasar celda por celda al access desde la ventana de comandos del matlab mediante querybuilder. Pero son muchos cellarrays que tengo que procesar, quiero añadir un pushbutton que haga este trabajo

    Saludos

    Me gusta

  2. Feliz año!!!!!! y gracias por el post…. me ha sido de mucha. Explicaré un poco lo que deseo hacer. Tengo un programa en matlab que recibe parámetros de entrada, de forma manual, y me arroja un resultado. Por otro lado, tengo una base de datos en mysql que tiene una lista de precios. Ahora, lo más interesante, a mi programa de matlab le ingreso todos los parámetros, menos uno, éste que falta ingresar se importará desde la base de datos, tomando sólo el primero valor (osea la primera fila). Luego, de un determinado tiempo (sean 15 ó 30 segundos, imagino que podrá colocar un temporizador), el mismo programa se ejcutará, pero considerando el segundo elemento de esa base de datos, que sería la fila 2. De esa forma, el programa se irá ejecutando, después de un determinando tiempo, hasta tomar todos los valores de esa base de datos.
    He revisado tu post, pero ahí se hace una lectura y se muestras los valores del base de datos por la pantalla de comandos. Pero lo que yo busco es poder jalar esos valores a una variable y que esta la pueda manipular en un archivo .m.
    Espero me puedas dar algunas ideas, ya que he estado averiguando y no he encontrado mucho al respecto y ya llevo algunos días con esto.
    De todas formas gracias por el tiempo.

    Me gusta

Deja un comentario