[caracas-pm] Pregunta referente a DBI

Alejandro Garrido Mota garridomota at gmail.com
Wed Jul 12 02:44:15 PDT 2006


Andrés Gazsó escribió:
> Estimado Alejandro:
>
> Ante todo me gustaría revisar contigo la estructura del programa.
>
>   

Si va! En el Perl Mongers te lo muestro vale?

> Asumo que quieres:
>
> 0. Tener la interfaz con el usuario a través de una página en el
> navegador;
>   

Si eso mismo es. Es un programa de registro.

> 1. Tener una base de datos SQL (te recomiento PostgreSQL o SQL Lite,
> pero en ningún caso MYSQL porque no maneja trasacciones lo cual equivale
> a que no puedes verificar lo que estás cargando a la base de datos a
> nivel de la base de datos misma; y,
>   
Tranquilo, sólo uso mysql para probar te puedo asegurar que al final
cuando termine de hacer la aplicación la paso a Postgre, total no creo
que deba de cambiar muchas cosas

> 2. La lógice del programa en Perl
>
>   
> En cuanto a lo anterior, mis recomendaciones por punto y desde mi
> humilde punto de vista:
>
> 0. para la interfaz del usuario, si es una sola página, puedes utilizar
> el módulo HTML::Templates, con lo cual creas una página de HTML puro con
> unas variables y la cargas desde tu programa de Perl. Por otro lado, lo
> puedes combinar con CGI.
>
>   
Si, ufff eso fue lo primero que utilizé, estoy usando DBI,
CGI::FormBuilder y HTML::Template. Estos dos últimos permiten
relacionarse muy bien.

> 1. En cuanto a no tener las sentencias de SQL en el programa, salvo que
> se trate de un asunto religioso o porque quieras cambiar las sentencias,
> puedes usar "Tied Hashes" pero ello requiere destrezar de programador
> nivel Master-Jedi, que en tu situación de Padawan dudo que tengas,
> porque tiene que haber concordancia entre las variables que está
> manejando DBI, tu setencia SQL -la cual deberás preparar- y para lo cual
> deberás contar con las variables. En fin, si bien no veo ninguna
> limitación, también es cierto que programarlo no será trivial. Los "Tied
> Hashes" funcionan así: tienes un hash que está en un archivo externo con
> su clave y valor (la clave es la variable y el valor es tu sentencia
> SQL) y al cargar tu programa de Perl, el mismo "importa" el hash a la
> hora de interpretar el programa. Ello te permitiría modificar la
> sentencia en el Hash. En cuanto a MySQL, (te recuerdo que si quieres
> seguir siendo pana nuestro, la fórmula es Debian-Apache-Postgres-Perl y
> nada de piraterías raras de la rebelión) dicho manejador de base de
> datos no maneja trasacciones, por lo que en principio, cada dato cargado
> tendrá en la pŕactica una suerte de "auto-commit" sin poder regreasar si
> la data no valida, no evalúa correctamente  o en defintiva es
> inconsistente. La idea con programas de verdad, es que tú preparas la
> data que vas a cargar en la base de datos, la evalúas con eval y si la
> base de datos no reporta error con lo que pretendes cargar, le mandas
> una instrucción de "Commit"; caso constrario, le envías "Rollback" e
> informas al usuario que la data no está kosher.
>
>   
Mas que todo la idea que tenía era crear un archivo X.sql y decirle a
Perl que lea ese archivo y ejecute todas las sentencias SQL que hay ahí
dentro.

> 2. La lógica del programa o de la "página" es perfectamente manejable
> por perl y puedes tener tantas páginas como quieras, ya sea por vía de
> HTML::Templates (con sus limitaciones) o por vía de CGI, donde si bien
> es más "rudo" también es cierto que ofrece más posiblidades. Todo
> depende del nivel de complejidad de tu programa.
>
> Esta es mi humilde recomendación en base a los conocimientos que he
> venido acumulando en el tema, pero a todo evento teníamos previsto
> proponer CGI y HTML::Templates para el príximo Mongers.
>
>   

Sip, no hay problemas. Sería muy bueno.

> Saludos,
>
> Vader. 
>
>
>
>   
Nos vemos, y gracias.


PD: Por cierto otra pregunta, Supongamos que yo tengo un archivo que
está separado por una linea, es decir, el archivo tiene dos partes, la
superior y la inferior, ¿Cómo hago para dividir eso en dos. Es decir,
por ejemplo guardar en una variable todo el contenido superior del
archivo y trabajar con el inferior.

Saludos.

-- 
Salu2
Atentamente:
Alejandro Garrido Mota
http://www.mogaal.com
GNU/Linux Debian Etch
En kernel 2.6.17
Usuario Linux registrado #386758
Caracas-Venezuela
GPG Key Fingerprint = F6A7 EF7E 4688 70C6 6B37  A8EF F6B0 9645 B24B F200



More information about the caracas-pm mailing list