Tecnología

Inicio

MySQL Perl DBI Tutorial

Una de las características más potentes de Perl es su capacidad para procesar, analizar, manipular y dar formato al texto y datos, por lo que es un lenguaje ideal para el desarrollo de aplicaciones de bases de datos. La interfaz de base de datos de Perl (DBI) Módulo hace que sea fácil de conectar y usar una amplia gama de sistemas de bases de datos, incluyendo MySQL. Además de Perl, el módulo de Perl :: DBI y DBD :: mysql controlador de base de datos debe estar instalado en el sistema en el que se desarrollan y ejecutan los scripts. La mayor parte de la funcionalidad de MySQL se puede acceder a través del controlador de MySQL para Perl DBI ::.

Conexión con el servidor MySQL

Antes de poder ejecutar consultas y otras declaraciones en una base de datos, el script necesita para establecer una conexión. Importar el módulo DBI en su secuencia de comandos con "use DBI":

el uso de DBI
IR

La DBI> función de conexión se conecta a una base de datos y devuelve un identificador de base de datos. Establecer una conexión con una base de datos local, proporcionando el nombre de su base de datos en el parámetro de origen, y el nombre de usuario y la contraseña para el usuario de MySQL el script utilizará para la conexión:

mi $ dap = DBI-> connect ( 'DBI: mysql: nombredb "," usuario "," contraseña ") o morir \" Error de conexión: $ DBI :: cadena_err \ "
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 de origen. En el siguiente ejemplo, el atributo RaiseError está configurado para informar de errores a través de la matriz () en lugar de la "o morir" comprobación de errores cláusula manual en el ejemplo anterior. El atributo PrintError está desactivado. PrintError informa automáticamente de errores a través de advertir () cuando está activado.

mi $ dap = DBI-> connect ( 'DBI: mysql: nombredb; host = db.server.edu', 'usuario', 'password', {PrintError => 0, RaiseError => 1})
IR

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

$ Dbh-> desconexión ();

Las consultas básicas

La declaración más común ejecutado en una base de datos es la instrucción SELECT. Crear un controlador de instrucción llamando a la función de preparar con la instrucción SELECT. Por ejemplo, este SELECT consultar un listado mesa de personas para el primer campo de nombre para todas las entradas donde el apellido es "Johnson":

mi $ sth = $ dbh-> prepare ( "SELECT Nombre FROM personas DONDE apellido = '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 \ "Consulta de apellido Johnson: \ n \"
IR
mientras que (mi resultrow $ = $ sth-> fetchrow_hashref ()) {
mi $ fn = $ resultrow -> {Nombre}
IR
de impresión \ "$ fn \ n \"
IR
}

Hay varias funciones para la recuperación de resultados de la consulta, como fetchrow_array a buscar a la siguiente fila como una matriz y fetchall_hashref a buscar todos los resultados a la vez en un hash.

El uso de marcadores de posición

Los marcadores de posición pueden ser utilizados en la sentencia de función a preparar. Esto es útil en los scripts interactivos en los valores de filtro de consulta son proporcionados por el usuario, sobre todo si un bucle permite al usuario enviar varias consultas antes de salir.

Por ejemplo, el marcador de posición (el signo de interrogación) ofrece el lugar donde se facilitará la entrada del usuario cuando se ejecuta la instrucción:

mi $ sth = $ dbh-> prepare ( "SELECT * FROM personas DONDE apellido =? ') o morir \" error Declaración: \ ". $ Dbh-> cadena_err
IR

Un bucle while pide repetidamente al usuario una apellidos:

imprimir \ "Búsqueda de apellidos: \"
IR
while ($ apellido = <>) {
chomp $ apellido
IR
mis resultados
IR

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

$ Sth-> execute ($ apellido) o morir \ "error Declaración: \". $ Sth-> cadena_err
IR

Los resultados, en su caso, se imprimen:

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

IR

}

mientras que (@results = $ sth-> fetchrow_array ()) {
mis $ Nombre = $ resultados [1]

IR

my $age = $results[3]

IR

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

IR

}

El identificador de instrucción se puso en orden con el método de meta, y el bucle continúa:

$sth->finish

IR

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

IR

}

Añadir, actualizar y eliminar registros

Las actualizaciones, inserciones y eliminaciones se pueden ejecutar simplemente utilizando la función de tareas pendientes. Por ejemplo:

$ Dbh-> do ( "INSERT INTO personas (nombre, apellido, edad) VALUES ( 'Bob', 'Johnson', 32)")
IR
$ Dbh-> do ( "gente de actualización del conjunto primer nombre = 'Robert' en primer nombre =?", Undef, "Bob")
IR
$ Dbh-> do ( "Borrar de la gente donde apellido = 'Johnson'");

Construcción y gestión de una base de datos

las funciones de administración de bases de datos se ejecutan con la función func utilizando el mango de base de datos obtenidos a partir de la conexión:

$ Dbh-> func (\ "createdb \", $ nombredb, 'admin')
IR
$ Dbh-> func (\ "dropdb \", $ nombredb, 'admin')
IR

El servidor también puede ser recargada y la parada. Esta funcionalidad es útil para simplificar y automatizar las tareas de administración de sistemas de bases de datos. Se requieren privilegios suficientes para estas acciones.

tabla de base de crear y modificar los estados pueden ser ejecutados con la función de tareas pendientes. Por ejemplo, esta sentencia crea la tabla de la gente:

$ Dbh-> do ( "CREATE TABLE personas (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, VARCHAR apellido (50), apellido VARCHAR (50), INT edad)")
IR

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