martes, 25 de octubre de 2011

Bases de Datos – Conceptos Básicos (1)

Como ya todos sabemos la forma de persistir datos suele realizarse por medio de una Base de Datos, la misma puede manejarse por medio de archivos de texto planos o por el uso de algún motor de Bases de Datos relacionales como puede ser MySQL, SQLite, PostgreSQL entre otros.
La ventaja de utilizar un motor de Base de datos es que nos ahorramos la escritura de métodos que controlen la consistencia y la integridad de los datos que vamos guardando dentro de la BD. Para los mas inexpertos que quiera hacer cosas pequeñas haré de ejemplo un programita sencillo que use una Base de Datos en un archivo de texto plano, de todas formas recomiendo ampliamente el uso de algún Motor de los nombrados con anterioridad.

Para el ejemplo de una BD en un archivo de texto abrir la consola interactiva de Python y escribir la siguiente función:

>>> def tomarDatos():
...     print 'Ingrese su nombre:'
...     nombre = raw_input()
...     print 'Ingrese su telefono:'
...     telefono = raw_input()
...     archivo = open("datoTelefonos.txt","a")
...     archivo.write(nombre + "/-/-/" + telefono + "\n")
...     archivo.close()

Si invocamos esta función como se indica a continuación:

>>> tomarDatos()
Ingrese su nombre:
pepito
Ingrese su telefono:
555-5555

Se grabara en el archivo “datoTelefonos.txt” el nombre pepito y su respectivo teléfono. Luego de cuatro corridas la Base de datos quedaría de la siguiente forma.

josema/-/-/444-4444
romina/-/-/333-3333
carlos/-/-/222-2222
pepito/-/-/555-5555

Nota: Cabe aclarar que la cadena “/-/-/” no es mas ni menos que el separador de campos, podemos usar cualquier patrón de caracteres que sepamos que no se van a repetir dentro de las cadenas para separar los campos. Luego parsearlos es sencillo.

Como puede observarse en el ejemplito se usa la línea:

archivo = open("datoTelefonos.txt","a")

Esta línea lo que hace es abrir el archivo “datoTelefonos.txt” con la opción “a” que es de append, esto quiere decir que el puntero del archivo se posiciona al final y ya queda listo para escribir datos al final del mismo.
El “open” con la opción “a” crea el archivo en caso que no exista, y lo abre y se posiciona al final en caso de que si exista. Si la opción fuera “w” el archivo se estaría abriendo con la opción de escribir, en este caso  si el archivo no existe el archivo se crea, y en caso de que si exista, el archivo se crea vació.

Para parsear los datos podemos definir esta funcion:

>>> def leerDatos():
...     print "Leyendo datos\n"
...     archivo = open("datoTelefonos.txt","r")
...     for i in archivo.readlines():
...             linea = str(i).split("/-/-/")
...             print "nombre = " + linea[0]
...             print "telefono = " + linea[1]
...     archivo.close()


La salida de invocar este método es la siguiente:

>>> leerDatos()
Leyendo datos

nombre = josema
telefono = 444-4444

nombre = romina
telefono = 333-3333

nombre = carlos
telefono = 222-2222

nombre = pepito
telefono = 555-5555

Lo que se hace en dicho método es abrir el archivo con la opción “r” READ, que seria como abrirlo como solo lectura. Luego la función “archivo.readlines()” devuelve todas las líneas del archivo en un arreglo o lista. Con el for i in archivo.readlines(): vamos iterando por las líneas una a una. En cada iteración se asigna una línea diferente en la variable “i” hasta que no queden más líneas que asignar.
Por ultimo con el método split, se parsea la línea dividiéndola según un separador pasado por parámetros, en nuestro caso se le pasa el patrón “”, el resultado es una lista, arreglo o vector que contiene todas las porciones de la cadena.

Aquí muestro otro ejemplo así queda mas claro:
>>> cadena = "esta-es-una-muestra_de-como-funciona"
>>> parseoCadena = cadena.split("-")
>>> print parseoCadena
['esta', 'es', 'una', 'muestra_de', 'como', 'funciona']

No hay comentarios:

Publicar un comentario