domingo, 7 de julio de 2013

Tutorial Perl MySQL Consulta

Bueno,es raro que hable de MySQL en este blog pero en fin,vamos a ver como usarlo en perl,se suponer que debes saber algo de MySQL y de Perl para entender este tutorial,pero aun así lo haré un poco didáctico:

Primero que nada necesitamos instalar el modulo DBI de perl,lo mas seguro es que ya lo tengas,pero si no es así lo instalamos desde terminal con :

sudo cpan DBI 

Bien,ahora vamos a usar un script para ver su funcionamiento,el script se usa desde la terminal,recuerden que la terminal sirve para muchas cosas,entre ellas probar los algoritmos antes de usar GUI o Diseño Web.

Iniciamos(lo que esta en morado iremos escribiendo en el script):

Definimos el hashbang y llamamos a DBI:

#!/usr/bin/env perl

use DBI;

Ahora definimos los datos de acceso:

El usuario:

my $user = "usuario";

La base de datos:

my $db = "base_de_datos";

El host:

my $host = "mi_host";

El puerto(regularmente es el 3306 a menos que tu mismo o el administrador lo hayan cambiado):

my $port = "3306";

Si no sabes cual es y tienes nmap,puedes averiguarlo con:

nmap host | grep --color sql
También vamos a guardar una tabla:

my $table = "tabla"; 

Y el password:

my $pass = "password";

Si no quieres guardarlo a fuego(adentro del script),puedes usar STDIN desde la shell:

print "Password : ";

my $pass = <STDIN>;

chop($pass);

O incluso hacer invisible la shell,o usar un shasum,etc.

Ahora vamos a crear un variable de información para MySQL:

my $info="DBI:mysql:database=$db;$host:$port";

Vamos a crear una variable tipo referencia para guardar la conexión:

my $dbh = DBI->connect($info,$user,$pass);

Por ultimo vamos a preparar un query para consulta:

my $query = "Select * from $table"; # Orden MySQL

Ahora preparamos la query:


my $sth = $dbh->prepare($query); 

Y ejecutamos:

$sth->execute();

Con eso ya establecimos nuestra conexion MySQL,ahora para ver los valores de la tabla,solo hace falta ver en ellos:

Creamos una referencia:

my $referencia = $sth->fetchrow_hashref()

Y podemos recorrer sus valores con un foreach:

foreach my $keys (keys $referencia)
  {
        print  " $keys => $referencia->{$keys}";
  }

Eso en el caso de ser solo una linea si es mas de una se recomienda usar un buble while asi:

my $referencia;
my $n = 0; # Creamos un numero para guardar el nombre de los valores
while($referencia = $sth->fetchrow_hashref())
 # Llenamos el valor de la referencia con nuevos valores
{
if ($n == 0)
{
    foreach my $keys (keys $referencia)
    {
        print  " $keys"; # Imprimimos las columnas
    }
}
print "\n";

foreach my $keys (keys $referencia)
  {
        print  " $referencia->{$keys}"; # Imprimimos las columnas
  }
$n++;
}
print "\n";

Con eso simulamos la impresion de MySQL,tendriamos que ponerle una barras tipo exel,pero con eso nos manda la impresión tabla columna de MySQL.

El script completo queda así:

Enlace
Eso es todo,no lo explico mas porque no tengo tiempo,pero si tienen dudas comenten.

Como ven es un uso de shell,pero así se inicia todo,esto se podría hacer un tipo phpmyadmin en programación web o programa en Gtk/Qt/etc para sistemas operativos:





Eso es todo :D.

Mas información.



4 comentarios:

  1. Genial tu tutorial, solo una pregunta: -- Porque no optaste por MariaDB o mongoDB en vez de por Mysql!?

    ResponderBorrar
    Respuestas
    1. Porque tengo que aprender a usarlas primero :P

      En realidad la que mas uso es MySQL pero de esas dos que mencionas me interesa MongoDB,en el futuro hare algun tutorial de python y perl :D

      Saludos.

      Borrar
  2. Podrías decir el nombre del programa que estas usando ^^ se ve minimalista...

    ResponderBorrar

Los comentarios serán revisados antes de ser publicados.