Métodos Z SQL
Este tutorial te pemitirá acceder a bases de
datos relacionales a través de Zope. Seguiremos los siguientes pasos:
-
Paso 1 : Establecer una conexión con
una base datos.
-
Paso 2 : Crear métodos Z SQL.
-
Paso 3 : Crear interfaces de búsqueda.
Cada uno trabajará desde la carpeta de
trabajo que tiene asignada (b2b/user1, b2b/user2,...b2b/user20), en la
que irá realizando los ejemplos indicados en este tutorial.
Una vez finalizado este breve manual realizaremos
algunos ejercicios .
Paso 1: Establecer una conexión
con una base de datos.
Es el primer paso que debemos
realizar siempre que trabajamos con un base de datos y nos premitirá
crear, acceder y modificar la información que tenemos almacenada
en la base de datos.
Para crear una conexión
con una base de datos, los pasos a realizar son:
-
Desde nuestro "folder" (carpeta) de trabajo,
añadir un objeto "Z Gadfly Database Conexion" , nos aparecerá
la pantalla siguiente:

-
En el campo "Id" introducimos
"ConexionBD".
-
En el campo "Title" introducimos " Conexion BD Zope Gadfly".
-
En el campo "Select a Data Source" seleccionamos la correspondiente
a nuestro usuario (user1, user2,....).
-
Dejamos activo el campo "Connect Inmediately".
-
Pulsamos el botón "Add".
Así ya hemos creado una conexión con
la base de datos.
Paso 2: Crear métodos
Z SQL
Los
métodos Z SQL nos permiten ejecutar sentencias SQL sobre la base
de datos. Las sentencias SQL que vamos a construir con estos métodos
nos permitirán:
-
Crear una tabla en la base de datos de información
relativa a productos.
-
Insertar información sobre productos concretos
en la tabla de la base de datos.
-
Consultar datos sobre los productos insertados en
la tabla de la base de datos.
Los resultados obtenidos de la
ejecución de métodos podrán ser empleados desde otros
objetos Zope.
Crear
tablas
Añadiremos un método
Z SQL para crear una tabla donde se almacenarán los datos relativos
a productos:
-
Desde nuestro "folder" (carpeta) de trabajo,
añadir un objeto "Z SQL Method" , nos aparecerá
la pantalla siguiente:
-
En el campo "Id" introducimos "sqlCrearTablaProductos".
-
En el campo "Title" introducimos "Creación de la tabla
de productos".
-
En el campo "Connection id" introducimos el identificador de la
conexión que hemos creado antes, "ConexionBD".
-
En el campo "Arguments" no introducimos ningún valor.
-
En el campo "Query template" introducimos la sentencia SQL asociada
al método que estamos creando, en este caso es una sentencia de
creación de una tabla en la base de datos:
CREATE
TABLE producto (id_producto VARCHAR(10), descripcion_producto VARCHAR(30),
precio_producto FLOAT)
-
Pulsar el botón "Add and Test".
-
Para que se ejecute la sentencia SQL y se cree la tabla correspondiente
en la base de datos, pulsar el botón "Submit Query". Si
la sentencia se ha ejecutado sin errores aparecerá una pantalla
como la siguiente.
Insertar
datos
A continuación,
añadiremos un método Z SQL para introducir datos relativos
a los diferentes productos que existen en nuestra empresa:
-
Desde nuestro "folder" (carpeta) de trabajo,
añadir un objeto "Z SQL Method" , nos aparece la pantalla
siguiente:
-
En el campo "Id" introducimos "sqlIntroducirDatosProductos".
-
En el campo "Title" introducimos "Inserción de datos
de productos".
-
En el campo "Connection id" introducimos el identificador de la
conexión que hemos creado antes, "ConexionBD".
-
En el campo "Arguments" introducimos en líneas diferentes
los nombres de las filas de la tabla de productos:
-
id_producto
-
descripcion_producto
-
precio_producto
-
En el campo "Query template" introducimos la sentencia sql asociada
al método que estamos creando, en este caso es una sentencia de
inserción de valores en la tabla en la base de datos:
INSERT
INTO producto (id_producto, descripcion_producto, precio_producto)
VALUES ('<dtml-var
id_producto>','<dtml-var descripcion_producto>',<dtml-var precio_producto>)
-
Pulsar el botón "Add and Test" aparecerá un formulario
pidiendo los valores de los diferentes campos de la tabla para un producto.
En este caso, introducimos valores para el Producto1:
-
En el campo "Id producto" introducimos Producto1
-
En el campo "Descripción de producto" introducimos Boligrafos
-
En el campo "Precio producto" introducimos 100.
-
Para que se ejecute la sentencia y se cree el registro correspondiente
pulsar "Submit Query". Si la sentencia se ha ejecutado sin errores
aparecerá una pantalla como la siguiente:
Para insertar más datos sobre productos en
nuestra tabla, realizaremos los siguientes pasos:
-
Desde nuestro "folder" (carpeta) de trabajo,
pinchamos en el método Z SQL que acabamos de crear, sqlIntroducirDatosProductos,
nos aparecerá el método editado.
-
Seleccionamos el "Test" de este método
y nos aparecerá de nuevo el formulario de inserción de datos,
de este modo podremos insertar nuevos valores:
-
Pulsar "Submit Query" para que se cree el registro correspondiente.
Consultar datos
Para poder visualizar la información sobre los
diferentes productos que hemos almacenado en la base de datos, deberemos
crear un método de consulta, para ello realizaremos los siguientes
pasos:
-
Desde nuestro "folder" (carpeta) de trabajo,
añadir un objeto "Z SQL Method" , nos aparece la pantalla
siguiente:
-
En el campo "Id" introducimos "sqlObtenerDatosProductos".
-
En el campo "Title" introducimos "Obtener datos productos".
-
En el campo "Connection id" introducimos el identificador de la
conexión que hemos creado antes, "ConexionBD".
-
En el campo "Arguments" no introducimos ningún valor.
-
En el campo "Query template" introducimos la sentencia sql asociada
al método que estamos creando, en este caso es una sentencia de
consulta a la tabla producto de la base de datos:
SELECT * FROM producto
-
Pulsar el botón "Add and Test".
-
Para que se ejecute la sentencia y se realice la consulta en la tabla correspondiente
pulsar "Submit Query". Si la sentencia se ha ejecutado sin errores
aparecerá una pantalla como la siguiente, en la que vemos la información
que hemos insertado anteriormente sobre nuestros dos productos:
Paso 3: Crear interfaces de búsqueda.
Para
publicar en el Web la información almacenada en la base de datos,
será necesario crear al menos dos documentos o métodos
DTML, uno que nos muestre un formulario de entrada para recoger los datos
de entrada de la consulta, y otro para mostrar los resultados obtenidos.
Zope proporciona un asistente (Wizard) que permite de forma sencilla la
creación de estos documentos DTML.
Vamos a crear un interfaz para
el método Z SQL sqlObtenerDatosProductos para ello realizamos
los siguientes pasos:
-
Desde nuestro "folder" (carpeta) de trabajo,
añadir un objeto "Z Search Interface" , nos aparecerá
la pantalla siguiente:
-
En "Select one or more searchable objects" seleccionamos el método
sqlObtenerDatosProductos.
-
En el campo "Report Id" introducimos informe_productos.
-
En el campo "Report Title" introducimos Informe de productos.
-
En el campo "Report Style" seleccionamos Tabular.
-
En el campo "Search Input Id" introducimos index_html.
-
En el campo "Search Input Title" introducimos Buscando productos.
-
Pulsar "Add" y aparecerá la pantalla principal de nuestra
carpeta de trabajo, en la que se han creado automáticamente dos
nuevos métodos DTML, el index_html y el informe_productos.
-
Si vamos a "View" veremos la página principal de nuestra
carpeta, que nos permite obtener la tabla de productos almacenados en la
base de datos pulsando el botón "Submit Query":

Ejercicios
Ejercicio 1: Modificar
los métodos DTML creados automáticamente por el asistente
en el último ejemplo del tutorial, para que el index_html de
nuestra carpeta tenga el aspecto siguiente:

y
la página que muestra los productos, tenga el aspecto siguiente:

Ejercicio 2:
Crear una nueva interfaz de búsqueda para un método Z SQL
que tenga asociada la siguiente sentencia SQL:
SELECT * FROM producto WHERE <dtml-sqltest id_producto type=string>
(Esta sentencia permitirá obtener la información asociada
a un producto, a partir de su identificador (id_producto) ).
Ejercicio
3: Sin emplear el asistente de creación
de interfaces, crear los métodos DTML necesarios para implementar
una interfaz para un método Z SQL que tenga asociada la siguiente
sentencia SQL:
SELECT * FROM producto WHERE <dtml-sqltest descripcion_producto type=string>
(Esta sentencia permitirá obtener
la información asociada a un producto, a partir de su descripción
(descripcion_producto) ).