Python desde Cero: Bases de Datos

“Bienvenidos una vez más a Python desde Cero, curso en el cual aprendemos a programar sin conocimiento alguno. En el capítulo anterior, te enseñe a programar orientado a objetos, es decir, aprendimos como definir una clase, como definir sus atributos, como instanciarla y como generar la lógica necesaria para su completo funcionamiento. Si eres nuevo en este curso, te recomiendo que le eches un vistazo al capítulo anterior para que te pongas en contexto (Capítulo 5 – Clases, Atributos y Métodos)

Hoy, vamos a aprender todo lo relacionado con el módulo MySQLdb, en otras palabras, aprenderemos a conectarnos a una base de datos 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 base de datos 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 base de datos digamos Oracle (por poner un ejemplo) vas a tener que descargar el módulo respectivo para este tipo de base de datos.

¿Qué es MySQLdb?

MySQLdb es una interfaz para la conexión a un servidor de base de datos 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:


#!/usr/bin/python



import MySQLdb

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>

  import MySQLdb

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 base de datos

Antes de conectarnos a una base de datos en MySQL asegúrate de cumplir con lo siguiente:

  • Haber creado una base de datos 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 base de datos en Python es a través de un ejemplo:


#!/usr/bin/python



import MySQLdb



# Establecemos la conexión con la base de datos

bd = MySQLdb.connect("localhost","usuarioprueba","prueba123","prueba_db" )



# Preparamos el cursor que nos va a ayudar a realizar las operaciones con la base de datos

cursor = bd.cursor()



# 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 base de datos

bd.close()

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 base de datos, 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 base de datos. Por último, cerramos la sesión establecida con la base de datos para así no gastar recursos.

¿Cómo creamos una tabla en la base de datos?

Una vez que sabemos como establecer una conexión con la base de datos, estamos listos para crear tablas en la base de datos utilizando el método execute del cursor que creamos anteriormente. Veamos como crear una tabla denominada empleado dentro de nuestra base de datos:


#!/usr/bin/python



import MySQLdb



# Establecemos la conexión con la base de datos

bd = MySQLdb.connect("localhost","usuarioprueba","prueba123","prueba_db" )



# Preparamos el cursor que nos va a ayudar a realizar las operaciones con la base de datos

cursor = bd.cursor()



# Creamos la tabla empleado

sql = "CREATE TABLE EMPLEADO (

  NOMBRE CHAR(20) NOT NULL,

 APELLIDO  CHAR(20),
  EDAD INT,

  SEXO CHAR(1),

  SALARIO FLOAT )"



cursor.execute(sql)



# Nos desconectamos de la base de datos

bd.close()

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 base de datos. Veamos como insertar un empleado dentro de la tabla EMPLEADO que creamos anteriormente.


#!/usr/bin/python



import MySQLdb



# Establecemos la conexión con la base de datos

bd = MySQLdb.connect("localhost","usuarioprueba","prueba123","prueba_db" )



# Preparamos el cursor que nos va a ayudar a realizar las operaciones con la base de datos

cursor = bd.cursor()



# 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)"

try:

  # Ejecutamos el comando

  cursor.execute(sql)

 # Efectuamos los cambios en la base de datos

 bd.commit()

except:
  # Si se genero algún error revertamos la operación

  bd.rollback()



# Nos desconectamos de la base de datos

bd.close()

Observemos que para que los cambios sean efectuados en la base de datos es necesario usar bd.commit(). Si queremos reversar los cambios efectuados podemos usar bd.rollback().

¿Cómo obtenemos todos los empleados registrados en la base de datos?

La operación lectura es necesaria si quieres buscar información dentro de la base de datos.

Veamos los métodos mas usados a la hora de ejecutar un lectura en la base de datos 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:


#!/usr/bin/python



import MySQLdb



# Establecemos la conexión con la base de datos

bd = MySQLdb.connect("localhost","usuarioprueba","prueba123","prueba_db" )



# Preparamos el cursor que nos va a ayudar a realizar las operaciones con la base de datos

cursor = bd.cursor()



# Preparamos el query SQL para obtener todos los empleados de la BD

sql = "SELECT * FROM EMPLEADO"

try:

  # Ejecutamos el comando

  cursor.execute(sql)

  # 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)

except:

 print "Error: No se pudo obtener la data"



# Nos desconectamos de la base de datos

bd.close()

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 base de datos. Veamos como modificar la edad de un empleado cuyo salario sea igual a 2000:


#!/usr/bin/python



import MySQLdb



# Establecemos la conexión con la base de datos

bd = MySQLdb.connect("localhost","usuarioprueba","prueba123","prueba_db" )



# Preparamos el cursor que nos va a ayudar a realizar las operaciones con la base de datos

cursor = bd.cursor()



# Preparamos el query SQL para modificar el registro

sql = "UPDATE EMPLEADO SET EDAD = EDAD + 1 WHERE SALARIO = 2000"

try:

  # Ejecutamos el comando

 cursor.execute(sql)

  # Efectuamos los cambios en la base de datos

 bd.commit()

except:

  # Si se genero algún error revertamos la operación

  bd.rollback()



# Nos desconectamos de la base de datos

bd.close()

¿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 base de datos. Veamos como eliminar a un empleado cuyo apellido sea igual a Picca:


#!/usr/bin/python



import MySQLdb



# Establecemos la conexión con la base de datos

bd = MySQLdb.connect("localhost","usuarioprueba","prueba123","prueba_db" )



# Preparamos el cursor que nos va a ayudar a realizar las operaciones con la base de datos

cursor = bd.cursor()



# Preparamos el query SQL para eliminar al empleado

sql = "DELETE FROM EMPLEADO WHERE APELLIDO=‘Picca’"

try:

  # Ejecutamos el comando

  cursor.execute(sql)

  # Efectuamos los cambios en la base de datos

  bd.commit()

except:

 # Si se genero algún error revertamos la operación
 bd.rollback()



# Nos desconectamos de la base de datos

bd.close()

Conclusión

En esta lección, aprendimos todo lo relacionado con el módulo MySQLdb, en otras palabras, aprendimos a conectarnos a una base de datos 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!”

Posted on

Python desde Cero: Clases, Atributos y Métodos

“Bienvenidos una vez más a Python desde Cero, curso en el cual aprendemos a programar sin conocimiento alguno. En el capítulo anterior, te enseñe como crear módulos en Python, como importarlos en nuestros programas, y como usar los módulos que vienen incorporados en el lenguaje. Si eres nuevo en este curso, te recomiendo que le eches un vistazo al capítulo anterior para que te pongas en contexto (Capítulo 4)

Hoy, vamos a aprender a programar orientado a objetos, es decir, vamos a aprender a definir una clase, como definir sus atributos, como instanciarla y como generar la lógica necesaria para su completo funcionamiento.

¿Cómo definimos una clase?

Para definir una clase en Python, solo tenemos que hacer uso de la palabra clave ‘class’, seguida del nombre que le quieras asignar, seguido de un doble punto. Veamos un ejemplo:

class mascota: 

Si observamos el ejemplo, podemos apreciar que creamos una clase llamada mascota.

Debemos resaltar dos puntos importantes a la hora de crear una clase en Python:

  • Código identado – Todo el código que va poseer la clase debe estar identando, no puede estar a la misma altura que la declaración de la clase ya que el interprete levantará un error.
  • Sin paréntesis – Cuando creamos una clase en Python no debemos colocar paréntesis después del nombre, al menos, que quisiéramos que la misma herede las características de otra clase.

Atributos de una clase

De nada nos sirve una clase sin atributos que la definan, es por eso que debemos asignarle a la clase mascota algunas propiedades. Veamos como:


class mascota:

 numero_de_patas = 0

 color = “marrón”

Observemos que para definir los atributos, lo único que tenemos que hacer es declarar algunas variables dentro de la clase. En el ejemplo, declaramos numero_de_patas y color, dos características de la mascota que quisiéramos guardar en el objeto. En cuanto a los atributos de una clase no existen limites, puedes usar cuantos tu quieras para cumplir con la definición de ese objeto.

Es importante saber que cuando definimos atributos tenemos que estar pendiente de:

  • Asignarle siempre un valor – Siempre cuando declaremos un atributo en una clase en Python, debemos asignarle un valor por defecto ya que sino el interprete disparará una excepción.
  • Nombre de atributos – Los nombres que le asignes a los atributos siempre deben ser los más sencillos y descriptivos posibles.

¿Cómo instanciar una clase?

Una declaración de una clase no es algo que uno pueda manipular directamente, es por eso que tenemos que instanciar un objeto de esa clase para así modificar los atributos que esta posea. Para instanciar una clase en Python, lo único que tenemos que hacer, es asignar a una variable el nombre de la clase seguida de paréntesis. Veamos como, siguiendo el ejemplo anterior:


class mascota:

 numero_de_patas = 0

 color = “marrón”



perro = mascota()

Ahora que ya sabemos instanciar una clase, ¿Cómo modificamos sus atributos?

Para referenciar una propiedad o atributo de un objeto en Python, lo único que tenemos que hacer es seguir la siguiente estructura nombre_variable + . + nombre_atributo. Veamos como, dado el ejemplo anterior:

perro.numero_de_patas

Observemos que lo que estamos haciendo, es referenciar el valor contenido en el atributo numero_de_patas, es decir, estamos obteniendo el valor de la propiedad numero_de_patas del objeto perro.

Nosotros podemos tratar es propiedad como si fuera una variable cualquiera, es por eso que podemos modificar el valor de ese atributo. Veamos como:


class mascota:

 numero_de_patas = 0

 color = “marrón”



perro = mascota()

perro.numero_de_patas = 4

perro.color = “negro”

print "El perro tiene“ + perro.numero_de_patas + “ patas y es de color “ + perro.color

Si ejecutamos el código anterior podemos observar que nos imprime lo siguiente:

El perro tiene 4 patas y es de color negro

Esto se debe a que modificamos las propiedades del objeto perro, ya que es un “perro” lo que estábamos definiendo, decidí asignarle 4 al número de patas con la siguiente expresión perro.numero_de_patas = 4 y negro al color de la mascota con la siguiente expresión perro.color = “negro”.

¿Cómo creamos una lógica dentro de las clases?

Okey, hasta ahora hemos visto como usar clases y objetos como estructuras o contenedores de información, pero que pasa si queremos hacer tareas más complejas con su data, necesitamos una manera de introducir algo de lógica a esos objetos. Es en este momento cuando los métodos vienen a ayudarnos.

Los Métodos, son esencialmente funciones contenidas dentro de las clases. Para definir un método es exactamente la misma manera como definíamos una función en capítulos anteriores. La única diferencia es que esa función ahora pertenece a esa clase y para invocarla tenemos que llamar primero a la variable que posee la clase para después poder hacer uso de ese método en particular.

Para definir un método debemos usar la palabra clave def, luego, el nombre que le queramos dar al método, seguido de (self):. Veamos como definir un método siguiendo los ejemplos anteriores:


class mascota:

  numero_de_patas = 0

  color = “marrón”



 def dormir(self): 

 print "zzz" 



perro = mascota()

Observemos que definimos un método dentro de la clase mascota llamado dormir. La función de este método es imprimir ”zzz” cada vez que lo invoquemos.

Para que un método funcione dentro de una clase es necesario cumplir con lo siguiente:

  • Extra identado – Todo el bloque del código que vas a definir para ese método va tener que poseer un extra de identación para que el interprete de Python lo entienda.
  • Siempre debe poseer un argumento “self” – Cada vez que declares un método en Python, vas a tener que agregarle el argumento self para que cuando ese método sea invocado, Python le pase el objeto instanciado y así pueda operar con los valores actuales de esa instancia. Si no incluyes ese argumento y ejecutas el código Python disparará una excepción y el programa se detendrá.

Si quieres pasarle argumentos creados por ti al método, lo haces como si pasarás múltiples argumentos a una función. Para mayor información sobre como pasar argumentos a una función, revisa el capítulo sobre funciones.

Ahora, ¿Cómo usamos ese método que acabamos de crear?. Sencillo, lo único que tenemos que hacer es instanciar una clase mascota y luego, a través de ella, invocar al método dormir. Veamos como:


class mascota:  numero_de_patas = 0
  color = “marrón”



 def dormir(self): 

 print "zzz" 



perro = mascota()

perro.dormir()

Observemos que al final del script invocamos al método dormir cuando ejecutamos esta instrucción perro.dormir(). Siempre para referenciar las funciones debemos usar el siguiente esquema nombre_variable + . + nombre_método + (). Es importante destacar que no debemos pasarle ningún atributo al método ya que Python lo hace por nosotros para satisfacer el argumento self, es decir, Python automáticamente le pasa como argumento la instancia de ese objeto al método que estemos invocando.

Si ejecutamos el código anterior, debemos observar que imprime el mensaje que escribimos en el método.

zzz

Conclusión

En esta lección, aprendimos a programar orientado a objetos, es decir, aprendimos como definir una clase, como definir sus atributos, como instanciarla y como generar la lógica necesaria para su completo funcionamiento. 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!”

Posted on

Python desde Cero: Módulos

“Bienvenidos una vez más a Python desde Cero, curso en el cual aprendemos a programar sin conocimiento alguno. En el capítulo anterior, te enseñe como crear y usar funciones dentro de Python

Hoy, vamos a aprender a desarrollar nuestros propios módulos, como importarlos en nuestras aplicaciones y a como usar los que ya vienen incorporados con el lenguaje.

Módulos

Los módulos en Python son grupos de funciones alojadas dentro de un archivo .py.

Como observamos en capítulos anteriores, uno no puede desarrollar una aplicación compleja sin organizar nuestro código en funciones, y mientras que nuestro programa continua creciendo cada vez más y más, vamos a necesitar una manera para organizarlo a un nivel que no se vuelva engorroso de mantener, es ahí donde viene a la mano los módulos. Con ellos podemos organizar un grupo de funciones como si fueran un conjunto de herramientas las cuales podemos hacer uso de ellas cada vez que las necesitemos.

Los módulos son bastante fáciles de crear, ya que son scripts sencillos de Python. Vemos como crear un módulo:

Vamos a necesitar abrir un nuevo archivo en un editor de texto o en un IDE de tu preferencia. Para que el curso tenga sentido, voy a continuar con el ejemplo que utilizamos en el ultimo capítulo, crear un carrito de compra (ecommerce). Solo que esta vez vamos a calcular el impuesto de un articulo en especifico dado su precio.


def calcularImpuesto(precio, impuesto):

precioNuevo = precio / 100 * (100 + impuesto)

return precioNuevo

Observemos que fue sencillo de realizar, lo que hicimos fue definir una función llamada calcularImpuesto la cual toma dos argumentos precio y impuesto, para luego calcular y retornar el valor total del articulo.

Para que este código sea o cumpla como un módulo en Python, lo único que tenemos que hacer es guardarlo con la extensión .py en el mismo directorio donde residen nuestros otros scripts de la aplicación. Vamos a guardar el archivo con el siguiente nombre: finanzas.py y así nuestro módulo será el módulo de finanzas.

¿Cómo importar un módulo?

Para usar los módulos existen dos posibilidades, podemos usar la palabra clave import o la palabra clave from. import es la manera más simple y más coman de usar, ya que que importa todas las funcionalidades existentes dentro del archivo .py en donde este alojado ese módulo. Veamos como importar el ejemplo anterior en donde teníamos el módulo de finanzas (finanzas.py):


import finanzas

Observemos que para importar el módulo no hizo falta escribir la extensión del archivo. Una vez que Python interprete esta linea de código podemos tener a nuestra disposición la función calcularImpuesto que definimos anteriormente.

La otra manera es usando la palabra clave from, la cual importará única y exclusivamente la función que uno le pasa como parámetro, es decir, imaginemos que tenemos un módulo que posee miles y miles de funciones, para que importar todas esas funciones dentro de nuestro script si solo vamos a necesitar una, es en este caso donde viene a la mano el from. Una de las prácticas más recomendadas dentro de Python es hacer uso de la palabra from cuando se esta trabajando con módulos, ya que salva tiempo de procesamiento y recursos de la máquina en cuestión.

Veamos como importar una funcionalidad del módulo de finanzas:

from finanzas import calcularImpuesto 

Observemos que necesitamos especificar de que módulo queremos obtener nuestra función con from + MÓDULO y luego la función que queremos importar import + FUNCIÓN. En nuestro caso, del módulo de finanzas importa la función calcularImpuesto.

También puedes importar varias funciones a la vez, solo necesitas separarlas por comas.


from finanzas import calcularImpuesto, calcularDescuento

Incluso puedes importar todas las funciones usando un wildcard

from finanzas import * 

Después de importar los módulos, la manera de usar las funciones es la siguiente: el nombre del módulo, seguido de un punto, seguido del nombre de la función a usar. Veamos un ejemplo:


import finanzas

print finanzas.calcularImpuesto(100, 5)

Si corremos el script, debería imprimir 105. Una prueba sencilla, pero significa que nuestro módulo funcionó a la perfección!

Módulos Incorporados

Existen miles de módulos incorporados dentro de Python. Debido a que el rango es extenso, es imposible cubrirlos todos dentro de este curso, por lo que solo me voy basar en los más útiles. Si quieres conocer más sobre los módulos incorporados en Python te invito a que le eches un vistazo a la página oficial donde encontrarás toda la documentación necesaria. Veamos cuales son esos módulos:

  • math
  • os
  • datetime
  • urllib2

math

El módulo de math nos provee el acceso a funciones y constantes matemáticas. Veamos unos ejemplos:


import math



math.pi #Pi, 3.14...

math.e #Número de Euler, 2.71...



math.degrees(2) #2 radianes = 114.59 grados

math.radians(60) #60 grados = 1.04 radianes



math.sin(2) #Seno de 2 radianes

math.cos(0.5) #Coseno de 0.5 radianes

math.tan(0.23) #Tangente de 0.23 radianes



math.factorial(5) #1 * 2 * 3 * 4 * 5 = 120

math.sqrt(49) #Raíz cuadrada de 49 = 7

Existe miles de funciones dentro de este módulo te invito a que las revises todas aquí.

datetime

Si necesitas trabajar con fechas y tiempos, entonces el módulo datetime es el indicado para ti. Veamos un ejemplo con los usos más comunes:


import datetime

from datetime import date

import time



time.time() #Retorna el número de segundos desde el 1 de enero de 1970 (Unix Epoch)



date.fromtimestamp(123456789 #Convierte número de segundos en un objeto tipo date

date.fromtimestamp(time.time()) #Podemos combinar las funciones time y fromtimestamp para representar el tiempo actual



currentDate = date.fromtimestamp(time.time()) #Creamos una variable con la representación del tiempo actual

currentDate.strftime("%d/%m/%y") #Le coloca el siguiente formato a la fecha DD/MM/YY



currentDate.isoformat() #Le coloca el formato estándar ISO a esa fecha

Existe miles de funciones dentro de este módulo te invito a que las revises todas aquí.

os

Este módulo te permite trabajar con el sistema operativo en el cual Python este ejecutándose, ya sea Windows, Mac o Linux. Nos enfocaremos en la funcionalidad path ya que es la más común. Path nos permite manipular y encontrar propiedades de los archivos y carpetas que existen en el sistema. Vemos unos ejemplos:


from os import path



path.exists("/Users/Picca") #Cheque si un directorio existe



path.getatime("/Users") #Retorna la fecha en la cual ese directorio fue accedido por ultima vez

path.getmtime("/Users") #Retorna la fecha en la cual ese directorio fue modificado por ultima vez



path.getsize("/Users/Picca/Desktop/boot") #Retorna el tamaño en bytes de ese archivo



path.join("C:", "Users") #Retorna la siguiente dirección "C:/Users"

Existe miles de funciones dentro de este módulo te invito a que las revises todas aquí.

urllib2

Este módulo permite interactuar con la web. La función más común es la urlopen la cual nos permite descargar una página o un archivo que exista en la web. Veamos unos ejemplos:


import urllib2

urllib2.urlopen("http://codehero.co")

Este scritp descargará el HTML de la pagina web codehero.co.


import urllib2

urllib2.urlopen("http://codehero.co").read(100)

Al igual que en el ejemplo anterior, se descargará el HTML de codehero.co pero ahora solo nos devolverá los primeros 100 caracteres. Para así después poder extraer los trozos que nos sean necesarios.

Existe miles de funciones dentro de este módulo te invito a que las revises todas aquí.

Conclusión

En esta lección, aprendimos como crear módulos en Python, como importarlos en nuestros programas, y como usar los módulos que vienen incorporados en el lenguaje. Te invito a que practiques y crees tus propios módulos ya que lo mejor de todo es que los puedes reutilizar en diferentes aplicaciones que estés desarrollando. 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!”

Posted on

Python desde Cero: Funciones

Bienvenidos una vez más a Python desde Cero, curso en el cual aprendemos a programar sin conocimiento alguno. En el capítulo anterior, te enseñe todo lo referente al uso de variables, operadores y estructuras de control.

Hoy, aprenderemos todo lo que tiene que ver con las funciones dentro de Python, desde los tipos hasta los estándares necesarios para desarrollar una buena función.

¿Qué es una Función?

Una función es un bloque de código el cual puede ser ejecutado cuando y cuantas veces deseemos. Son de gran ayuda cuando necesitamos que un programa ejecute cierta operación muchas veces.

Existen dos tipos de funciones, las creadas por ti, la cuales incluyen el código que tu deseas ejecutar, y las que vienen incluidas con Python, las cuales sirven para realizar procedimientos básicos, como por ejemplo convertir un integer en un string o saber cual es el tamaño de dicho string.

Funciones – Creadas por ti

La mejor manera de enseñar a usar las funciones, es con un ejemplo, por lo que imaginemos que queremos hacer un programa para un carrito de compras online el cual toma todos los costos de los artículos que desees comprar y los suma para luego retornar el costo total de la compra.

Vamos a escribir una función que nos permita agarrar dos precios de artículos de compra, sumarlos y después imprimir ese valor. Veamos como hacerlo:


#nuestros dos precios de los artículos

articulo1 = 10  #articulo 1 posee un precio de 10

articulo2 = 25 #articulo 2 posee un precio de 25



def totalizarCompra():

costoTotal = articulo1 + articulo2

print costoTotal



totalizarCompra()

Para definir una función en Python lo único que debemos usar es la palabra clave def y luego colocar el nombre que le queremos dar a la función, en este caso totalizarCompra. Luego, tipeamos dos paréntesis (más adelante veremos que se puede hacer con esos paréntesis pero por los momentos vamos a mantenerlo simple), y finalmente agregamos dos puntos.

Después de esto, todo el código que deseemos agregar a la función debe estar identado (al igual que con los if, while, etc . Para más información te invito a repasar el capítulo anterior). Para poder ejecutar dicha función lo único que necesitamos hacer es tipear el nombre de la función seguida de dos paréntesis (e.j. totalizarCompra()).

Si ejecutamos el script podemos observar que nos retorna 35, lo que es correcto.


$ python2.7 carritoCompra.py

$ 35

Argumentos

Hasta los momentos nuestra función parece un poco rígida, ya que no puede manejar variables o valores externos dentro del bloque de código. Veamos como podemos hacer para que esta función tome algunos argumentos o valores externos.

Imaginemos por un momento que la función totalizarCosto() la queremos usar en otra parte de nuestro programa, pero en vez de siempre sumar los mismos valores articulo1 + articulo2, sumemos artículos diferentes con diferentes precios. Para llevar a cabo este requerimiento, vamos a usar los ‘argumentos’, los cuales van a estar definidos dentro de los dos paréntesis que posee la función.

Un argumento es la vía para pasar información a una función cuando no sabemos el valor o valores que esa variable posee.

¿Confundido?, veamos el ejemplo anterior y salgamos de las dudas. Ya sabemos que necesitamos agregarle argumentos a la función. Veamos como:


articulo1 = 10 #articulo 1 posee un precio de 10

articulo2 = 40 #articulo 2 posee un precio de 40

articulo3 = 5 #articulo 3 posee un precio de 5

articulo4 = 25 #articulo 4 posee un precio de 25



def totalizarCompra(item1, item2):

costoTotal = item1 + item2

print costoTotal



totalizarCompra(articulo1, articulo2)

Los argumentos van definidos dentro de los paréntesis de la función. Cada argumento que deseamos generar debe tener tu propio nombre y deben estar separado por comas. Este actúa como una referencia temporal hacia la información que le pasamos a la función mientras que esta ejecuta el bloque del código.

Observemos que lo primero que hicimos fue agregar dos artículos más articulo3 y articulo4 para poder probar el script con diferentes artículos. Segundo, agregamos dos argumentos item1 y item2 los cuales mantendrán el valor de los artículos para así después sumarlos.

Por último, veamos que pasa cuando invocamos la función con los dos argumentos totalizarCompra(articulo1, articulo2). Lo primero que ocurre es que las dos variables que le pasamos articulo1 y articulo2 se convierten en los argumentos item1 y item2 respectivamente. Esto siempre ocurre en el orden que que uno define los argumentos, es decir, la primera variable que pasamos es asignada al primer argumento, las segunda al segundo argumento y así sucesivamente.

Segundo, las variables que le pasamos se convierten variables locales dentro del bloque de código de la función, esto significa que podemos hacer uso de esas variables fácilmente (item1 y item2).

Suficiente explicaciones, ahora ejecutemos el script y veamos que nos devuelve:


$ python2.7 carritoCompra.py

$ 50

Como podemos ver, nos devolvió la suma del articulo1 y articulo2. Ahora veamos que pasa si en vez de pasarle articulo1 y articulo2 como argumentos, le pasamos articulo3 y articulo4. Cambiemos solo la última línea del script por totalizarCompra(articulo3, articulo4)


articulo1 = 10 #articulo 1 posee un precio de 10

articulo2 = 40 #articulo 2 posee un precio de 40

articulo3 = 5 #articulo 3 posee un precio de 5

articulo4 = 25 #articulo 4 posee un precio de 25



def totalizarCompra(item1, item2):
 costoTotal = item1 + item2

 print costoTotal



totalizarCompra(articulo3, articulo4)

Si ejecutamos el script podemos observar que exitosamente imprime 30, la suma del articulos3 y del articulo4, ya que esos fueron los argumentos que les pasamos.


$ python2.7 carritoCompra.py

$ 30

¿Cómo retornar valores dentro de una función?

Por último, veamos una de las características más importantes dentro del capítulo de funciones, la forma de como retornar valores dentro de una función.

Hasta ahora hemos visto como hacer funciones que no retornan ninguna información, pero ¿qué pasa sí necesitamos guardar la respuesta de totalizarCompra(articulo3, articulo4) en vez de imprimirla?

La respuesta es sencilla, lo único que debemos hacer es asignar en la función que variable va a hacer el valor de retorno. La manera de asignar o decirle a la función que retorne una variable es con la palabra clave return.Veamos el ejemplo anterior, vamos a remplazar la palabra print de la función totalizarCompra() por la palabra return. Así la función sabrá que deberá retornar el valor de costoTotal y no imprimirlo.


articulo1 = 10 #articulo 1 posee un precio de 10

articulo2 = 40 #articulo 2 posee un precio de 40

articulo3 = 5 #articulo 3 posee un precio de 5

articulo4 = 25 #articulo 4 posee un precio de 25



def totalizarCompra(item1, item2):

 costoTotal = item1 + item2

 return costoTotal



total1 = totalizarCompra(articulo1, articulo2)

total2 = totalizarCompra(articulo3, articulo4)



print total1

print total2

Obviamente, la función no va imprimir la respuesta sino que va a devolver a las variables toatl1 y total2, los valores correspondientes a la suma de sus artículos, es decir, total1 va a recibir la suma de articulo1 y articulo2, y total2 va a recibir la suma de articulo3 y `articulo4’.

Si ejecutamos el script observamos:


$ python2.7 carritoCompra.py

$ 50

$ 30

Funciones – Incorporadas

Existen operaciones que son muy usadas dentro de la programación, es por eso que Python las incluye para que así las podamos usar en cualquiera de nuestros programas que estemos desarrollando.

La manera para invocar dichas funciones es exactamente la misma como invocamos las funciones que desarrollamos nosotros pero con la única deferencia que no debemos definirlas con anterioridad.

En este capítulo, vamos a pasearnos por la funciones más importantes y más usadas dentro del mundo de la programación, pero existen miles y miles de funciones que Python pone a tu disposición para que hagas uso de ellas, si quieres echarle un ojo te recomiendo la documentación de Python.

str()

Primero, veamos una de las funciones más usadas en Python: el convertidor a string. Muchas de las veces que uno desarrolla aplicaciones se encuentra con la necesidad de convertir una variable que contiene un número en una cadena de caracteres. Como por ejemplo:


numero = 10

print 'El número es ' + numero

Si ejecutamos ese script nos encontraremos con un error ya que le estamos pidiendo a Python que añada un número a una cadena de caracteres. Es en este caso donde srt() sale al rescate!, ya que esta toma el valor del número y lo retorna como un string(cadena de caracteres). De esta manera Python entenderá que + no significará sumar los dos elementos sino concatenar o juntar dos cadenas de caracteres. Veamos como:


numero = 10

print 'El número es ' + str(numero)

Ahora si ejecutamos este trozo de código, observamos que nos imprime la cadena de caracteres sin ningún problema:


$ El número es 10

str() no solo acepta valores tipo integer, también puede aceptar diferente tipos de dato como por ejemplo Booleans.


bool = True

print 'El valor de la variable es ' + str(bool)

len()

Otra tarea muy común es saber cual es el tamaño de una cadena de caracteres, es ahí donde Python nos cubre las espaldas y nos proporciona **len(), función que toma una cadena de caracteres y nos retorna el tamaño de la misma en forma de número. Veamos como usarla:


cadena = 'Hola Codehero!'

print len(string)

Si ejecutamos el código vemos que imprime 14, que es el número de caracteres que posee ese Hola Codehero!.


$ 14

range()

Finalmente, veamos una función que no es tan común pero que viene a la mano una vez que uno empieza a desarrollar programas más complejos en Python. Estamos hablando de range, función que nos permite crear una lista de números dado el número al cual queremos llegar, es decir, si queremos crear una lista de número del 0 al 10, es mucho más fácil hacerlo con esta función que tipear todos los números uno a uno.

Veamos como usarla:


numeros = range(11)

print(numeros)

Lo único que necesitamos para usar la función es pasarle como argumento el número que deseamos alcanzar range(numero).

Es importante saber que la función genera el ciclo de número hasta el número menor al que le pasamos como argumento. Por lo que si queremos crear 10 números, debemos pasarle 11 como argumento.

Ahora veamos como hacer si quiero solo los número del 5 al 10:


numeros = range(5, 11)

print(numeros)

Podemos observar que range también puede tomar dos argumentos, siendo el primero el número inicial y el segundo el número final de la serie.

Ya para finalizar veamos como hacer si solo quiero los números impares del 1 al 10:


numeros = range(5, 11, 2)

print(numeros)

Observemos que range también puede tomar 3 argumentos, siendo el primero el número inicial y el segundo el número final de la serie y el tercero la cantidad de números que debe sumar entre cada iteración.

Conclusión

En esta lección, aprendimos como crear en Python nuestras propias funciones y como usar las funciones que ya viene incorporadas en el lenguaje!. 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!

Posted on

Python desde Cero: Variables, Operadores y Estructuras de Control

Bienvenidos una vez más a Python desde Cero, serie en donde aprendemos Python desde cero. En el capítulo anterior descargamos Python, lo instalamos, nos paseamos por las diferentes maneras sobre como ejecutar scripts y hicimos nuestro primer programa, un Hola Mundo!.

Hoy, aprenderemos las variables y sus tipos de datos, los operadores que podemos usar y las estructuras de control que deberíamos utilizar para desarrollar nuestro propio código.

Como el capítulo de hoy va a hacer un aprendizaje dinámico, vamos a usar el Shell de Python ya que nos permite ejecutar línea por línea el código que deseemos probar.

Para ejecutar el Shell de Python haremos lo siguiente:

Windows

Debemos navegar a la carpeta de instalación de Python y hacer doble-click en python.exe. Les recomiendo que si van a desarrollar en Python, creen un atajo para así no tener que estar realizando todo este proceso cada vez que queramos iniciar el Shell.

Mac o Linux

Abrimos el Terminal y tipeamos python

Si les aparece el siguiente mensaje quiere decir que ya estamos dentro del Shell

Python 2.7.5 (default, Oct 11 2012, 20:14:37)
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Observamos que estamos usando Python 2, configuración que dejamos en el capítulo anterior (Python 2.7.5). Si por alguna razón decidieron instalar Python 3, estén atentos porque pueden existir algunas diferencias en los comandos de código que vamos a usar.


Variables

Pensemos que una variable es un lugar en donde podemos guardar diferentes tipos de datos. Crear una variable en Python es más sencillo que en otros lenguajes de programación. La estructura es la siguiente:

nombre = valor

Donde nombre es el nombre que le quieras dar a la variable y valor es el valor que le quieras asignar a dicha variable.

Tipos de Datos

Números

Veamos un ejemplo:

>>> estados = 12

Estaríamos asignando 12 a la variable estados.

Si tipeamos el nombre de la variable en el Shell, este nos devolvería el valor. Veamos:

>>> estados
12

Python soporta diferente tipos de números por ejemplo:

Enteros (int)
>>> estados
12
Decimales (Float)

>>> decimal = 10.5

Como puedes observar no es necesario declarar el tipo de variable como en otros lenguajes, Python lo descifra por ti.

Cadena de caracteres (Strings)

Podemos almacenar un texto dentro de una variable siempre y cuando este dentro de comillas simples o dobles. Veamos un ejemplo:

>>> saludo = “Bienvenido a Codehero.co”

Si tipeamos el nombre de la variable en el Shell, este nos devolvería el valor. Veamos:

>>> saludo
'Bienvenido a Codehero.co'

Si queremos usar comillas simples dentro de una declaración o viceversa lo podemos hacer haciendo uso de \ delante de las comillas que deseemos que pertenezcan al texto. Veamos un ejemplo:

 >>> mensaje = "Dicen que \'Codehero.co\' es el mejor sitio para aprender a programar"
>>> mensaje
"Dicen que 'Codehero.co' es el mejor sitio para aprender a programar"

Booleans

Representación de Verdadero(True) o Falso(False) dentro de una variable. Veamos un ejemplo:

>>> esHombre = True

Asignamos a la variable esHombre el valor de True (Verdadero). Si tipeamos el nombre de la variable en el Shell, este nos devolvería el valor. Veamos:

>>> esHombre

True

En Python es importante que la primera letra de True o False este en mayúscula.

Vectores (Array)

Es un conjunto de objetos encapsulados dentro de una sola variable. En Python se denominan listas. Veamos un ejemplo de cómo crear una lista:

>>> miLista = [1, 2, 3]

Observemos que todos los objeto que queramos encapsular deben estar entre corchetes [ ].

En el ejemplo anterior asignamos a miLista los objetos 1, 2 y 3. Si tipeamos el nombre de la variable en el Shell, este nos devolvería el valor. Veamos:

>>> miLista
[1, 2, 3]

Las listas pueden contener objetos diferentes, por ejemplo:

>>> miLista = [1, 'codehero', False]

Además, pueden encapsular listas dentro de la misma lista, ejemplo:

>>> miLista = [1, [4, ‘codehero’, 9], True]

Ahora si queremos saber o retornar un valor en específico dentro de una lista lo hacemos de la siguiente manera:

nombre_de_la_lista[El número del objeto en el orden de creación]

Veamos un ejemplo:

>>> miLista = [1, [4, 'codehero', 9], True]
>>> miLista[0]
1
>>> miLista[2]
True

Debemos observar que en Python los objetos dentro de una lista se indexan a partir del 0, eso quiere decir que mi primer objeto va estar en la posición 0 y el segundo en la posición 1 y así sucesivamente.

Otra característica de porque Python es un lenguaje sencillo de utilizar, es que podemos crear variables en línea y asignarles su valor respectivamente, veamos como se hace:

>>> a,b,c = 1,2,3

Observemos que creamos una variable a, una b y una c y le asignamos 1, 2, 3 respectivamente.

Así mismo podemos asignarle el mismo valor a múltiples variables veamos como:

>>> a = b = c = 1

Asignamos 1 a la variable a, b y c.

En Python es importante asignarle un valor a una variable la primera vez que la creamos, de lo contrario nos arrojará un error. La solución a este detalle es asignar valores básicos o neutros dependiendo del tipo de dato. Ejemplo: numero = 0, mensaje = “”.


Comentarios

Veamos la manera de como comentar el código en Python. Uno crea comentarios principalmente para recordar que tipo de funcionalidad tiene ese código en particular. Para comentar usamos #, todo lo que este escrito después del numeral no será tomado en cuenta. Veamos unos ejemplos:

>>> #Esto es un comentario
>>> nombre = ‘codehero’ #Asignamos el nombre del sitio a la variable nombre


Operadores

Son elementos que nos permiten manipular las variables. Veamos unos ejemplos:


2 + 3 #Adición, retorna 5
8 - 5 #Sustracción, retorna 3
2 * 6 #Multiplicación, retorna 12
12 / 3 #Division, retorna 4
7 % 3 #Modulo, retorna el residuo de la division, 1 en este caso.
3**2 #Potencias, retorna 9

Nosotros también podemos asignar a la misma variable el resultado de una operación. Veamos el siguiente código:

x = 2
x += 4 #Agrega 4 a x, ahora x es igual a 6
x /= 2 #Divide x por 2, ahora x es igual 3

Los operadores no solo funcionan con números, también los podemos usar en cadenas de caracteres. Por ejemplo, si tenemos las siguientes variables a = ‘Codehero’ y b = ‘es el mejor’ las podemos concatenar de la siguiente forma:

>>> a = 'Codehero '
>>> b = 'es el mejor'
>>> a + b
'Codehero es el mejor'

Estructuras de control

Una vez que hayas creado y manipulado variables, las estructura de control te permitirán manejar el flujo de la data. Los dos tipos de estructuras que aprenderemos el día de hoy son:

Condicionales

Los condicionales te permiten ejecutar diferentes bloques de código dependiendo de que valor posea una variable en cuestión. Veamos unos ejemplos:

Para esta parte del tutorial vamos a usar scripts ya que vamos a necesitar ejecutar más de una línea de código a la vez. Para saber como ejecutar un script desde la consola te recomiendo que revises el capítulo anterior).

esActivo = True
if esActivo:
print ‘Codehero esta activo’

Lo que hace el código anterior es chequear si la variable <code>esActivo</code> es igual a <code>True</code>, como la variable la declaramos <code>esActivo = True</code>, al ejecutar el script nos va a retornar <code>Codehero esta activo</code>.

<h3>Tipos de condicionales:</h3>


<h5>Menor</h5>

Valida si una variable es menor a otra.

if 2 < 3:
print ‘Dos es menor que tres’
Mayor

Valida si una variable es mayor a otra.

if 2 > 3:
print ‘Dos es mayor que tres’
Igual

Valida si una variable es igual a otra.

if 2 == 3:
print ‘Dos es igual que tres’
Diferente

Valida si una variable es diferente a otra.

if 2 != 3:
print ‘Dos es diferente que tres’
Mayor Igual

Valida si una variable es diferente a otra.

if 2 >= 3:
print ‘Dos es mayor o igual que tres’
Menor Igual

Valida si una variable es diferente a otra.

if 2 <= 3:
print ‘Dos es menor o igual que tres’

Hasta ahora vimos la manera de ejecutar un solo bloque de código pero que pasa cuando quiero ejecutar diferentes bloques, sencillo, usamos el comando else. Veamos un ejemplo:

esActivo = False
if esActivo:
print ‘Es activo’
else:
print ‘No esta activo’

Si queremos ejecutar más de dos bloques con varias condiciones usamos el comando elif. Veamos como:

a = 15
if a < 3:
print ‘Es menor que tres’
elif a == 5:
print ‘Es igual a cinco’
else:
print ‘Es mayor que quince’

Bucles

Es una sentencia que se realiza repetidas veces a un trozo aislado de código. Hoy vamos a aprender los bucles mas básicos que son for y while

Bucle For

Es un bucle en la que se puede indicar el número mínimo de iteraciones. Veamos un ejemplo:

miLista = [1,2,3,4,5]

for a in miLista:
print a

Si lo ejecutamos obtenemos:

1
2
3
4
5

Bucle While

Su propósito es repetir un bloque de código mientras una condición se mantenga verdadera.

a,b = 0,5

while a < b:
print a
a += 1

Observemos que en este caso para detener el ciclo necesitamos aumentar el valor de la variable a con la siguiente instrucción a += 1

Si lo ejecutamos obtenemos:

0
1
2
3
4

Conclusión

Esto es todo por ahora, pero hoy cubrimos suficientes técnicas como para que vayan practicando. Siéntase libres de leer el tutorial una y otra vez hasta que tenga sentido. Cualquier duda que tengan se las contestaré a través de los comentarios, además espero que se unan y le echen un vistazo a todo el resto de la serie!

Posted on

Bienvenido a Python desde Cero instalar la consola en windows linux y MacOS


Ejecución Sencilla vs. Engorrosa

Ya vimos que podemos ejecutar un script desde el IDLE GUI, ahora veamos otras maneras como podemos ejecutar dicho script.

Vamos a suponer que queremos ejecutar el archivo tutorial.py, existen dos maneras para hacerlo la manera sencilla o la manera engorrosa:

Vía Engorrosa

Navegamos hasta el directorio donde se encuentra ubicado tutorial.py (En mi caso esta en la carpeta ~/Documents/Tutoriales/Python/capitulo1/) y luego usamos el comando “python + el nombre del archivo” para ejecutarlo, veamos como sería ese código:

cd ~/Documents/Tutoriales/Python/capitulo1/
 python tutorial.py
 Hola Mundo

Una vez ejecutado el script nos imprime el Hola mundo! al igual como lo hizo cuando lo corrimos desde IDLE de Python.

Vía Sencilla

Lo primero que hay que hacer es abrir el tutorial.py con el IDE o editor de texto de nuestra preferencia y agregarle la siguiente línea para indicarle al terminal que lenguaje o motor de interpretación va a usar

#!/usr/local/bin/python

Nos quedaría lo siguiente:

#!/usr/local/bin/python
Hola Mundo

Lo segundo, tendríamos que darle permisología de ejecución a tutorial.py con la siguiente instrucción en el terminal

chmod 755 tutorial.py

Por último ejecutaríamos el archivo desde el terminal de la siguiente manera

./tutorial.py

Si todo esta correcto debería imprimir lo siguiente:

Hola Mundo!

Conclusión

En esta lección, instalamos un Python desde cero, discutimos las características importantes del lenguaje, hablamos sobre las mejores herramientas para escribir nuestro código y hicimos nuestro primer programa!. 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 esta serie.”

Posted on

Python desde Cero: Manejo de Archivos

Bienvenidos una vez más a Python desde Cero, curso en el cual aprendemos a programar sin conocimiento alguno. En el capítulo anterior, te enseñe todo lo relacionado con el módulo MySQLdb, en otras palabras, aprendimos a conectarnos a una base de datos 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 eres nuevo en este curso, te recomiendo que le eches un vistazo al capítulo anterior para que te pongas en contexto (Capítulo 6 – Bases de Datos)

Hoy, vamos a aprender todo lo relacionado con el manejo de archivos en Python, desde como abrirlo hasta como escribir y leer información del mismo.

¿Cómo abrimos un archivo?

Antes de que podamos leer o escribir un archivo, hay que abrirlo con la función de Python open(). Esta función crea un objeto archivo que se utiliza para llamar a otros métodos de apoyo asociados. Veamos cual es la sintaxis:

objecto_archivo = open(file_name [, access_mode][, buffering])

Describamos un poco los argumentos de la función:

file_name – Nombre del archivo que se desea acceder.
access_mode – Determina el modo en el que el archivo tiene que ser abierto, es decir. leer, escribir, etc. El modo de acceso de archivos por defecto es de lectura.
buffering – Si el valor de búfer se establece en 0, ningún almacenamiento temporal se llevará a cabo. Si el valor es 1, el búfer se realizara por linea.

Aquí está una lista con los diferentes modos de apertura de un archivo:
Modos Descripción
r Abre un archivo de sólo lectura. El puntero del archivo se coloca en el principio del archivo. Este es el modo predeterminado.
rb Abre un archivo de sólo lectura en formato binario.
r+ Abre un archivo para lectura y escritura. El puntero del archivo estará en el principio del archivo.
rb+ Abre un archivo para la lectura y la escritura en formato binario. El puntero del archivo estará en el principio del archivo.
w Abre un archivo para escribir solamente. Sobrescribe el archivo si el archivo existe. Si el archivo no existe, se crea un nuevo archivo para escritura.
wb Abre un archivo para escribir sólo en formato binario. Sobrescribe el archivo si el archivo existe. Si el archivo no existe, se crea un nuevo archivo para escritura.
w+ Abre un fichero para escritura y lectura. Sobrescribe el archivo existente si existe el archivo. Si el archivo no existe, se crea un nuevo archivo para la lectura y la escritura.
wb+ Abre un archivo, tanto para la escritura y la lectura en formato binario. Sobrescribe el archivo existente si existe el archivo. Si el archivo no existe, se crea un nuevo archivo para la lectura y la escritura.

¿Cuáles son los atributos más importantes de un archivo?

Una vez que hemos abierto el archivo, podemos obtener la información relacionada a el mismo. Veamos una lista con todos los atributos más importantes relacionados al tipo de objeto:
Atributo Descripción
objeto_archivo.closed Devuelve true si el archivo está cerrado, false en caso contrario.
objeto_archivo.mode Devuelve el modo de acceso con el que se abrió el archivo.
objeto_archivo.name Devuelve el nombre del archivo.

Veamos un ejemplo sobre como utilizar todo lo que hemos visto hasta ahora:

#!/usr/bin/python

# Abrimos el archivo esunbichito.txt
fo = open("esunbichito.txt", "wb")
print "Nombre del archivo : ", fo.name
print "Cerrado o no : ", fo.closed
print "Modo de apertura : ", fo.mode

Si ejecutamos el script anterior debemos obtener el siguiente resultado:

Nombre del archivo:  esunbichito.txt
Cerrado o no :  False
Modo de apertura :  wb

¿Cómo cerramos un archivo?

Para cerrar un archivo usamos el método close(), el cual limpia cualquier información que no haya sido escrita y cierra el archivo. Después que este método es ejecutado no podemos ejecutar ninguna escritura.

Python automáticamente cierra el archivo una ves que la referencia del objeto es asignada a un nuevo archivo.

Es una buena practica hacer uso del método close() para cerrar los archivos una vez que terminemos de trabajar con ellos.

Veamos la sintaxis que debemos usar:

objecto_archivo.close();

Veamos como usar close() con un ejemplo:

#!/usr/bin/python

# Abrimos el archivo esunbichito.txt
fo = open("esunbichito.txt", "wb")
print "Nombre del archivo: ", fo.name

# Cerramos el archivo esunbichito.txt
fo.close()

Si ejecutamos el script anterior obtenemos:

Nombre del archivo: esunbichito.txt

¿Cómo escribir un archivo?

En Python para escribir información en un archivo usamos el método write().

Es importante tener en cuenta que las cadenas de caracteres(strings) de Python pueden tener datos binarios y no sólo de texto.

El método write() no añade un carácter de nueva línea (‘\ n’) al final de la cadena.

Veamos la sintaxis para poder escribir en un archivo:

objecto_archivo.write(string);

Observemos que string es el texto que queremos escribir en el archivo.

Veamos como usar write() con un ejemplo:

#!/usr/bin/python

# Abrimos el archivo esunbichito.txt
fo = open("/tmp/esunbichito.txt", "wb")
fo.write( "esunbichitoes una gran pagina para aprender a programar Python.");

# Cerramos el archivo esunbichito.txt
fo.close()

Si ejecutamos el script anterior obtenemos:

esunbichitoes una gran pagina para aprender a programar Python.

¿Cómo leer un archivo?

En Python para leer información de un archivo usamos el método read().

Es importante tener en cuenta que las cadenas de caracteres(strings) de Python pueden tener datos binarios y no sólo de texto.

Veamos la sintaxis para poder leer un archivo:

objecto_archivo.read([count]);

Observemos que count es el numero de bytes a leer del archivo.

Veamos como usar read() con un ejemplo:

#!/usr/bin/python

# Abrimos el archivo esunbichito.txt
fo = open("/tmp/esunbichito.txt", "r+")
str = fo.read(10);
print "La lectura es : ", str

# Cerramos el archivo esunbichito.txt
fo.close()

Si ejecutamos el script anterior obtenemos:

La lectura es : esunbichitoes

¿Cómo renombramos un archivo?

En Python para renombrar un archivo usamos el método rename().

Veamos la sintaxis para poder renombrar un archivo:

os.rename(current_file_name, new_file_name)

Observemos que current_file_name es el nombre del archivo que queremos renombrar y new_file_name es el nuevo nombre que le queremos dar.

Veamos como usar rename() con un ejemplo:

#!/usr/bin/python
import os

# Renombramos esunbichito.txt por esunbichito.txt
os.rename( "esunbichito.txt", "esunbichito.txt" )

¿Cómo removemos un archivo?

En Python para remover un archivo usamos el método remove().

Veamos la sintaxis para poder leer un archivo:

os.remove(file_name)

Observemos que file_name es el nombre del archivo que queremos remover.

Veamos como usar remove() con un ejemplo:

#!/usr/bin/python
import os

# Eliminamos el archivo esunbichito.txt
os.remove("esunbichito.txt")

Conclusión

En esta lección, aprendimos todo lo relacionado con el manejo de archivos en Python, desde como abrirlo hasta como escribir y leer información del mismo. 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.

Nos vemos en la próxima serie de Python, ¡Python Avanzado!

¡Hasta entonces…! ”

Posted on

La clase stdClass de PHP crearla y acceder a sus datos

Una breve introducción a como me encontré stdClass

Hoy me he encontrado con la clase stdClass al devolver el resultado de una consulta de CodeIgniter.
Y si has llegado a aquí es porque ya has pasado por stackoverflow sin demasiada fortuna :).
Quien me lea habitualmente el blog sabrá que estoy aprendiendo a utilizar CodeIgniter 3 por varias razones.
La más importante para aprender un Framework accesible y con una buena curva de aprendizaje.

Que es stdClass

En PHP existe una clase que se stdClass esta clase es una clase vacía, no tiene absolutamente nada, ni propiedades ni métodos ni nada de nada.
Realmente en mi inexperiencia no le encuentro ninguna utilidad, los datos que se guardan en esta clase.
Bien se podrían guardar en un array, variable de session o cookie…
Pero la realidad es que CodeIgniter devuelve los resultados con esta clase y me ha costado un pelín aprender cómo se utiliza.

Como se identifica stdClass y accedo a sus datos

Para identificar una variable lo ideal es utilizar Var_dum()
Esta función nativa de PHP, nos da información de una variable
tipo de variable, si esta vacía, contenido de esta si es un objeto o clase etc..
vamos a jugar un poco con el código PHP para que se vea claro

Creando un objeto stdClass simple.

$ejemplo_stdClass = new stdClass(); // con esto instanciamos y llamamos a la clase stdClass
$ejemplo_stdClass ->PaginaWeb='esunbichito.com';

$ejemplo_stdClass ->autor='caeron';
echo var_dump($ejemplo_stdClass); 

Esto nos devuelve lo siguiente por pantalla object(stdClass)#19 (2) { ["PaginaWeb"]=> string(15) "esunbichito.com" ["autor"]=> string(6) "caeron" }
Nada mas empezar ya nos da muchas pistas, fíjate en las primeras palabras object(stdClass) nos dice que es un objeto stdClass.
Bien perfecto sabemos que es un objeto y como buen objeto para acceder a su contenido necesitamos ->
Después nos dice el contenido de ese objeto.
Tiene un campo string de 15 caracteres llamado PaginaWeb y que tiene el valor esunbichito.com
Además también tiene otra string de 6 caracteres llamada autor con el valor Caeron.
Vamos a acceder a este contenido.

Echo $ejemplo_stdClass ->autor // echo para imprimir variable y con -> marcamos lo que queremos mostrar
echo "<br>el contenido de autor: ".$ejemplo_stdClass ->autor;
echo "<br>el contenido de PaginaWeb: ".$ejemplo_stdClass ->PaginaWeb;

¿Como accedo cuando stdClass es un array?

En mi caso sucedió que tras hacer una consulta, la consulta me devolvía un array con el resultado en un objeto stdClass.
array(1) { [0]=> object(stdClass)#21 (2) { ["User_Login"]=> string(2) "caeron" ["User_Password"]=> string(3) "222" } }
Como antes al hacer un var_dum(), me devolvió una información valiosa
Que es un array en un objeto stdClass
Bien la única diferencia con el anterior ejemplo, es que las arrays están numeradas, así pues le tenemos que decir el valor de la array a acceder y donde queremos acceder.
echo "
el dato es: ". $resultados[0]->User_Password;

Si fuera un array multidimensional en vez de 0 seria 1,2,3 o lo que fuera necesario

Posted on

[Tutorial CodeIgniter 3 Españoll] Uso de cookies y sesiones en CodeIgnite

En estos momentos CodeIgniter dispone de 2 maneras diferentes de manejar cookies, una de ellas es el helper cookie, nos permite trabajar con cookies como se ha hecho siempre en PHP pero con un pequeño agregado de seguridad. La librería se llama session, esta librería es la que tendríamos que utilizar siempre para trabajar con sistemas de usuarios y datos delicados ya que toda la información pasa a una cookie encriptada.

Como se utilizo el Helper Cookie sesiones en CodeIgniter 3

Este helper contiene funciones útiles para trabajar con cookies

Como cargar el Cookie Helper CodeIgniter 3.

Para cargar este helper en CodeIgniter como siempre tenemos dos caminos, uno es cargarlo cuando lo necesitamos utilizando:

$this->load->helper('cookie');

también lo podemos cargar permanentemente modificando el archivo autoload de CodeIgniter 3 situado en application/config/autoload.php

Buscamos la variable $autoload que tendría que estar en la línea 92 aprox y la modificamos $autoload['helper'] = array('cookie'); una vez hecho esto ya podemos trabajar con este helper

Como utilizar el Cookie Helper

Lista de funciones del Cookie Helper en CodeIgniter 3

Utilizaremos la librería input que provee CodeIgniter para tener un extra de seguridad, sin tenernos que complicar demasiado la vida

Para insertar una cookie

los mínimos valores necesarios son, Nombre de la cookie, valor que tendrá esa cookie, y el tiempo de vida de la cookie en segundos. La sintaxis es la siguiente

$this->input->set_cookie('cookie_Prueba','cookie_valor','3600');  

Para leer una cookie con seguridad

$this->input->cookie('cookie_Prueba', TRUE);

Para borrar una cookie fácilmente

delete_cookie('cookie_Prueba');

Que es y para que se utiliza session en CodeIgniter 3

La librería Session de CodeIgniter está centrada en controlar el estado del usuario o visitante de tu web a través de pequeñas cookies codificadas instaladas en el navegador, así de simple y fácil

Como inicio la sesión de usuario

Antes de nada hay que configurar un poco application/config/config.php buscamos $config['encryption_key'] =''; y escribimos la clave de encriptación que nosotros queramos por ejemplo $config['encryption_key'] = 'quiero3huevosfritosconpatatasy6trozosdefua';
Si continuamos haciendo scroll hacia abajo podemos modificar también el nombre de la cookie para la sesión y más valores.

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

Como siempre en CodeIgniter podemos cargar la librería cuando la necesitemos o también lo podemos cargar permanentemente modificando el archivo autoload de CodeIgniter 3 situado en application/config/autoload.php más o menos esta por la línea 42 $autoload['libraries'] = array('session');

Escribir datos en nuestra sesión

Estos datos se guardaran en un array que tendremos que crear y haciendo uso de $this->session->set_userdata($array); pasaran a estar codificados y solo accesibles desde el método userdata().

$valoresSession = array(
               'id' => '1',
               'nombre' => 'esunbichito',
               'logueado' => false
            );
$this->session->set_userdata($valoresSession);
 

Como accedo a los valores de session una vez codificados

Para acceder es muy simple haremos uso del userdata()

 echo  $this->session->userdata('nombre');

Como borro la session actual?

Para borrar la sesión actual es muy simple $this->session->sess_destroy();

Posted on

[Tutorial CodeIgniter 3 Español]insertar, modificar, consultar y borrar

Configurar la conexión a la base de datos en CodeIgniter

Para configurar la conexión a la base de datos en CodeIgniter se tienen que editar 2 archivos diferentes, autoload.php y database.php los dos se encuentran dentro de application/config
En el archivo database.php, se tienen que configurar la base de datos el usuario el localhost y con eso la conexión si se configura conrrectamente se realizaría con éxito.
Despues le tenemos que decir a CI que debe de utilizar esa configuración, lo fácil si solo vamos a manejar una configuración es ir al archivo autoload.php y modificar el array libraries quedaría de la siguiente manera

 $autoload['libraries'] = array('database');
 

Si tenemos mas de una libreria se pone una coma y se continua…

 $autoload['libraries'] = array('database', 'libraries1','libraries2',);
 

Como hacer consultas en CodeIgniter

Realizar un select para consultar la base de datos utilizando CodeIgniter

class usuarios extends CI_Controller {
public function index()
{            
$usuarios = $this->db->query('select * from usuarios' )->result();
/*
/es muy importante ->result() es una function  propia del FrameWork
*/
foreach ($usuarios as $usuario)
{
print_r($usuario->User_ID ."<br>");
}
$this->load->view('welcome_message');
}
}

Realizar un insert para introducir valores en la base de datos utilizando CodeIgniter

$valoraescapar = $this->db>escape($valoraescapar);
$valordosaescapar = $this->db>escape($valordosaescapar);
$this->db->query(“insert into Usuarios (valoraescapar, valordos aescapar) values ($valoraescapar , $ valordosaescapar )”)

Realizar un update para modificar registros utilizando CodeIgniter

Realizar un borrar en de la base de datos utilizando CodeIgniter

Posted on