http://codehero.co/python-desde-cero-bases-de-datos/ Python desde Cero: Bases de Datos Hoy, vamos a aprender todo lo relacionado con el módulo MySQLdb, en otras palabras, aprenderemos a conectarnos a una MySql, a crear tablas, y a como insertar, obtener, modificar y eliminar registros de la base da datos usando el API de Python para BD. Bases de Datos El estándar de Python para las interfaces de bases de datos es el Python DB-API. La mayoría de las interfaces de bases de datos de Python se adhieren a este estándar, por lo que dicho API es compatible con una amplia gama de servidores de bases de datos, entre ellos: GadFly msql MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase Si quieres saber más información sobre la listas de compatible con Python te recomiendo que visites Interfaces y API s de bases de datos para Python. Es importante resaltar que si quieres hacer uso de una digamos Oracle (por poner un ejemplo) vas a tener que descargar el módulo respectivo para este tipo de. Qué es MySQLdb? MySQLdb es una interfaz para la conexión a un servidor de MySQL desde Python. Cómo instalar MySQLdb? Antes de continuar, vamos a asegurarnos de que no tengamos instalado MySQLdb en nuestras máquinas. Creemos un script con lo siguiente y ejecutemoslo: Si se produce el siguiente error entonces significa que el módulo de MySQLdb no está instalado en nuestra máquina: Traceback (most recent call last): File "prueba.py", line 3, in <module> ImportError: No module named MySQLdb Existen dos formas para instalar el módulo de MySQLdb, la manera sencilla, ejecutando el siguiente comando:
$ pip install MySQL-python y la manera engorrosa, donde debemos descargar de Descargas MySQLdb el módulo, y una vez descargado ejecutamos los siguientes comandos: $ gunzip MySQL-python-1.2.2.tar.gz $ tar -xvf MySQL-python-1.2.2.tar $ cd MySQL-python-1.2.2 $ python setup.py build $ python setup.py install Asegúrate de tener los privilegios de root para realizar la instalación. Conexión a la Antes de conectarnos a una en MySQL asegúrate de cumplir con lo siguiente: Haber creado una llamada prueba_db. Haber creado un usuario de conexión que posea las siguientes características: usuario: usuarioprueba y clave: prueba123. La mejor manera de ver y entender como conectarnos a una en Python es a través de un ejemplo: # Establecemos la conexión con la # Ejecutamos un query SQL usando el método execute() que nos proporciona el cursor cursor.execute("select VERSION()") # Extraemos una sola fila usando el método fetchone() data = cursor.fetchone() print "Versión Base de Datos : %s " % data # Nos desconectamos de la
Si ejecutamos el script anterior nos debería aparecer lo siguiente: Versión Base de Datos : 5.0.45 Observemos que un objeto de conexión fue retornado una vez que se estableció una conexión exitosa con la, este objeto se asignó a la variable bd. Luego, esta variable bd es usada para crear un cursor, el cual es el medio por donde podemos ejecutar queries SQL. En nuestro caso ejecutamos SELECT VERSION(), dicho query retorna la versión de la. Por último, cerramos la sesión establecida con la para así no gastar recursos. Cómo creamos una tabla en la? Una vez que sabemos como establecer una conexión con la, estamos listos para crear tablas en la utilizando el método execute del cursor que creamos anteriormente. Veamos como crear una tabla denominada empleado dentro de nuestra : # Establecemos la conexión con la # Creamos la tabla empleado sql = "CREATE TABLE EMPLEADO ( NOMBRE CHAR(20) NOT NULL, APELLIDO CHAR(20), EDAD INT, SEXO CHAR(1), SALARIO FLOAT )" # Nos desconectamos de la Observemos que a través del método execute del cursor podemos ejecutar cualquier tipo de query que deseemos, en este caso un CREATE.
Cómo insertamos un empleado en la base de datos? La operación insertar es necesario si deseas crear registros en una tabla de. Veamos como insertar un empleado dentro de la tabla EMPLEADO que creamos anteriormente. # Establecemos la conexión con la # Preparamos el query SQL para insertar un registro en la BD sql = "INSERT INTO EMPLEADO (NOMBRE, APELLIDO, EDAD, SEXO, SALARIO) VALUES ('Carlos', 'Picca', 24, 'M', 2000)" # Efectuamos los cambios en la bd.commit() # Si se genero algún error revertamos la operación bd.rollback() # Nos desconectamos de la Observemos que para que los cambios sean efectuados en la es necesario usarbd.commit(). Si queremos reversar los cambios efectuados podemos usar bd.rollback(). Cómo obtenemos todos los empleados registrados en la?
La operación lectura es necesaria si quieres buscar información dentro de la. Veamos los métodos mas usados a la hora de ejecutar un lectura en la desde Python: fetchone() - Este método obtiene la primera fila de un conjunto de resultados de una consulta a la BD. fetchall() - Este método obtiene todos los registros de un conjunto de resultados de una consulta a la BD. rowcount - Este es un atributo de sólo lectura y devuelve el número de filas afectadas por el método execute. Veamos como obtener todos los registros de la tabla EMPLEADO: # Establecemos la conexión con la # Preparamos el query SQL para obtener todos los empleados de la BD sql = "SELECT * FROM EMPLEADO" # Obtenemos todos los registros en una lista de listas resultados = cursor.fetchall() for registro in resultados: nombre = registro[0] apellido = registro[1] edad = registro[2] sexo = registro[3] salario = registro[4] # Imprimimos los resultados obtenidos print "nombre=%s, apellido=%s, edad=%d, sexo=%s, salario=%d" % (nombre, apellido, edad, sexo, salario) print "Error: No se pudo obtener la data"
# Nos desconectamos de la Si has seguido los ejemplos anteriores y ejecutas el script, deberás obtener un solo empleado ya que solo habíamos insertado un solo registro: nombre=carlos, apellido=picca, edad=24, sexo=m, salario=2000 Cómo modificamos a un empleado en la base de datos?la operación actualización significa actualizar uno o más registros que ya están disponibles en la. Veamos como modificar la edad de un empleado cuyo salario sea igual a 2000: # Establecemos la conexión con la # Preparamos el query SQL para modificar el registro sql = "UPDATE EMPLEADO SET EDAD = EDAD + 1 WHERE SALARIO = 2000" # Efectuamos los cambios en la bd.commit() # Si se genero algún error revertamos la operación bd.rollback() # Nos desconectamos de la Cómo eliminamos a un empleado en la base de datos?
La operación eliminar es necesario si desea eliminar uno o varios registros de la. Veamos como eliminar a un empleado cuyo apellido sea igual a Picca: # Establecemos la conexión con la # Preparamos el query SQL para eliminar al empleado sql = "DELETE FROM EMPLEADO WHERE APELLIDO= Picca " # Efectuamos los cambios en la bd.commit() # Si se genero algún error revertamos la operación bd.rollback() # Nos desconectamos de la Conclusión En esta lección, aprendimos todo lo relacionado con el módulo MySQLdb, en otras palabras, aprendimos a conectarnos a una MySql, a crear tablas, y a como insertar, obtener, modificar y eliminar registros de la base da datos usando el API de Python para BD. Si tienes alguna pregunta, yo estaré feliz de responderte en los comentarios, además espero que te unas y le eches un vistazo a todo el resto de este curso. Te espero la próxima semana!