ubiquitour.com

Tutorial de MySQL Perl DBI

Una de las características más potentes de Perl es su capacidad para procesar, analizar, manipular y dar formato de texto y datos, lo que es una lengua ideal para el desarrollo de aplicaciones de base de datos. El módulo de interfaz de base de datos de Perl (DBI) es fácil conectarse y utilizar una amplia gama de sistemas de bases de datos, incluyendo MySQL. Además de Perl, el módulo de Perl::DBI y controlador de DBD:: MySQL base de datos deben instalarse en el sistema donde se desarrolló y ejecutó las secuencias de comandos. La mayoría de la funcionalidad de MySQL puede accederse a través del controlador de MySQL para Perl::DBI.

Conectarse al servidor MySQL

Antes de que puede ejecutar consultas y otras declaraciones en una base de datos, la secuencia de comandos debe establecer una conexión. Importar el módulo DBI en la secuencia de comandos con "uso DBI":

Usar DBIIR

El DBI -> connect función se conecta a una base de datos y devuelve un manejador de base de datos. Establecer una conexión a una base de datos local, proporcionando el nombre de la base de datos en el parámetro de la fuente y el nombre de usuario y la contraseña para el usuario la secuencia de comandos se utiliza para la conexión:

mi $dbh = DBI -> connect ('DBI:mysql:dbname', 'usuario', 'contraseña') o die \"Connection error: $DBI:: errstr\"IR

Conexión a una base de datos remota es similar a una conexión local al proporcionar la dirección del host remoto en el parámetro source. En el siguiente ejemplo, el atributo RaiseError se establece en informe de errores vía die() en lugar de la "o morir" manual de comprobación de errores cláusula en el ejemplo anterior. El atributo PrintError está deshabilitado. PrintError automáticamente informes de errores vía warn() cuando está activado.

mi $dbh = DBI -> connect ('DBI:mysql:dbname; host=db.server.edu', 'usuario', 'contraseña', {PrintError = > 0, RaiseError = > 1})IR

Antes de salir de la secuencia de comandos, desconecte la base de datos utilizando la función de desconexión.

$dbh -> disconnect();

Consultas básicas

La declaración más común ejecutada sobre una base de datos es la instrucción SELECT. Crear un identificador de declaración llamando a la función de preparar con la instrucción SELECT. Por ejemplo, esta selección será consultar un listado de la tabla de personas para el campo nombre para todas las entradas donde el apellido es "Johnson":

mi $sth = $dbh - > prepare ("SELECT apellido de las personas donde lastname = 'Johnson'")IR

Ejecutar la instrucción:

$sth -> execute()IR

Recuperar una fila de datos a la vez como un hash e imprimir los resultados:

imprimir \"Query de apellido Johnson: \n\"IRmientras que (mi $resultrow = $sth -> {fetchrow_hashref())}mi $fn = $resultrow -> {apellido}IRimprimir \"$fn\n\"IR}

Hay varias funciones para recuperar resultados de consulta, tales como fetchrow_array a la siguiente fila como un array y fetchall_hashref para obtener todos los resultados a la vez en un hash.

Uso de marcadores de posición

Marcadores de posición se pueden utilizar en la declaración de la función de preparar. Esto es útil en secuencias de comandos interactivas donde los valores de filtro de consulta son facilitados por el usuario, particularmente si un bucle le permite presentar varias consultas antes de salir.

Por ejemplo, el marcador de posición (el signo de interrogación) es el lugar donde se proporcionará el usuario cuando se ejecuta la instrucción:

mi $sth = $dbh - > prepare (' seleccionar * de personas donde apellido =?') o morir de error \"Statement: \". $dbh -> errstrIR

Un tiempo bucle repetidamente solicita al usuario un nombre pasado:

imprimir \"Search para apellidos: \"IRmientras que ($lastname = <>) {}chomp $lastnameIRmi @resultsIR

Se ejecuta la instrucción preparada anteriormente, con $lastname proporcionado como un parámetro. Este parámetro se insertará en la instrucción de consulta en lugar de la marcador de posición signo de interrogación:

$sth -> execute($lastname) o morir de error \"Statement: \". $sth -> errstrIR

Los resultados, si los hubiere, se imprimen:

if ($sth->rows == 0) { print \&quot;No matches for `$lastname'.\\n\\n\&quot;

IR

}

while (@results = $sth->fetchrow_array()) { my $firstname = $results[1]

IR

my $age = $results[3]

IR

print \&quot;$firstname $lastname ($age)\\n\&quot;

IR

}

La manija de la declaración es arreglada para arriba con el método de acabado, y el bucle continúa:

$sth->finish

IR

print \&quot;Search for last name: \&quot;

IR

}

Agregar, actualizar y eliminar registros

Actualizaciones, inserciones y eliminaciones pueden ejecutarse simplemente mediante el uso de la do de la función. Por ejemplo:

$dbh -> hacer ("INSERT INTO personas (nombre, apellido, edad) valores ('Bob', 'Johnson', 32)")IR$dbh -> hacer ("gente de actualización set nombre = 'Roberto' donde nombre =?", undef, "Bob")IR$dbh -> hacer ("DELETE FROM personas donde lastname = 'Johnson'");

Construir y administrar una base de datos

Funciones de administración de bases de datos se ejecutan con la función func utilizando la manija de la base de datos de la conexión:

$dbh -> func (\"createdb\", $dbname, 'admin')IR$dbh -> func (\"dropdb\", $dbname, 'admin')IR

El servidor también puede volver a cargar y cerrar. Esta funcionalidad es útil para simplificar y automatizar las tareas de administración de sistemas de base de datos. Suficientes privilegios son necesarios para estas acciones.

Tabla base de datos crear y modificar las declaraciones puede ser ejecutado con la do de la función. Por ejemplo, este comando crea la tabla personas:

$dbh -> ("CREATE TABLE personas (id INT no NULL AUTO_INCREMENT PRIMARY KEY, nombre varchar (50), apellidos VARCHAR (50), edad INT)")IR

Creación y actualización de bases de datos es útil para automatizar la instalación de aplicaciones distribuidas, como foros de discusión, galerías de fotos y blogs.