El primer paso para consultar una base de datos por medio de DBI será conectarse a su
servidor desde nuestro programa Perl, normalmente a través de la red. Para hacerlo debemos crear
una instancia de la clase DBI y usar su método
connect
.
La información necesaria para conectarse es:
dbi:mysql:test:servidor.ccg.unam.mx
Si vas a conectarte a un servidor de base de datos Oracle necesitarás el controlador DBD::Oracle,
de la misma manera que necesitarás DBD::mysql para conectarte a una máquina que corra mysql.
Puedes descargar de CPAN
los controladores que necesites,
pero antes comprueba qué controladores hay disponibles en tu sistema con:
$ perl -e 'use DBI; print DBI->available_drivers();'
Aquí muestro un ejemplo de código de conexion a la base de datos
test
del servidor MySQL
servidor.ccg.unam.mx
:
#!/usr/bin/perl -w # Ejemplo escrito por Bruno Contreras Moreira use strict; use DBI; my $conexion = DBI->connect("dbi:mysql:test:servidor.ccg.unam.mx","usuario","clave"); if(!$conexion) { print "No me puedo conectar a mysql:test:servidor.ccg.unam.mx\n$DBI::errstr\n"; exit(-2); } $conexion->disconnect() || warn "Fallo al desconectarme de mysql:test:servidor.ccg.unam.mx\n$DBI::errstr\n";
En principio puedes mantener varias conexiones a la misma base de datos, y cada una de ellas se comportará de forma independiente:
#!/usr/bin/perl -w # Ejemplo escrito por Bruno Contreras Moreira use strict; use DBI; my $conexion1 = DBI->connect("dbi:mysql:test:servidor.ccg.unam.mx","usuario","clave"); if(!$conexion1) { print "Falla conexion1 a mysql:test:servidor.ccg.unam.mx\n$DBI::errstr\n"; exit(-2); } my $conexion2 = DBI->connect("dbi:mysql:test:servidor.ccg.unam.mx","usuario","clave"); if(!$conexion2) { print "Falla conexion2 a mysql:test:servidor.ccg.unam.mx\n$DBI::errstr\n"; exit(-3); } $conexion1->disconnect() || warn "Falla desconexion1 de mysql:test:servidor.ccg.unam.mx\n$DBI::errstr\n"; $conexion2->disconnect() || warn "Falla desconexion2 de mysql:test:servidor.ccg.unam.mx\n$DBI::errstr\n";
A veces es difícil conectarse a servidores muy cargados de trabajo, por lo que podemos probar a conectarnos varias veces, hasta que lo consigamos:
#!/usr/bin/perl -w # Ejemplo escrito por Bruno Contreras Moreira use strict; use DBI; my $conexion; until( $conexion = DBI->connect("dbi:mysql:test:servidor.ccg.unam.mx","usuario","clave") ) { warn "No consigo conectarme a a mysql:test:servidor.ccg.unam.mx\nLo intento de nuevo en 1 minuto\n"; sleep(60); } $conexion->disconnect() || warn "Fallo al desconectarme de mysql:test:servidor.ccg.unam.mx\n$DBI::errstr\n";
Bruno Contreras-Moreira