1. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
Día 1:
1. Instalando Python (en Linux)
2. El entorno de consola
3. Variables y constantes
Día 2:
4. Trabajo con tipos de datos
5. Trabajo con cadenas
6. Estructuras de control
Día 3:
7. Manejos de errores
8. Funciones
Día 4:
9. Objetos
10. Conexiones a base de datos, Objetos de Mysql y Pgsql
Día 5:
11. Librería de sistema operativo y tiempo
12. Creando librerías y parámetros entre scripts
2. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
1. Instalando Python (en Linux)
Python en Linux es muy fácil de instalar, de echo es prácticamente la
base de tantas herramientas de software libre que generalmente ya viene
por defecto.
Porque los programadores prefieren usar Python?
a. Te obliga a programar mas limpio que lenguajes como PHP
b. Su engine es mas ligero que el de PHP o Java
c. Es multiplataforma
d. Soporte para programar scripts, gui apps y web apps
e. Altamente escalable
f. Es SIMPLE
3. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
1. Instalando Python (en Linux)
Plataformas RPM (redhat, centOS, Fedora)
yum install python
Plataformas DEB (Debian, Knoppix, Ubuntu en todas sus variantes)
aptget install python
OjO: van a encontrar varias ramas de Python como la 2.4, 2.5, 2.6, 2.8, 3.0;
la rama 2.x es la mas usada y con mayor desarrollo por el momento, la 3.0
podría no tener todo lo que necesitas.
4. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
1. Instalando Python (en Linux)
Instalar Python con los comandos anteriormente mencionados solo
instala el “engine” base, python cuenta con una gran variedad de librerías
para diferentes funciones y cada una de estas con sus propias
dependencias, por ejemplo:
Si deseamos instalar las librerías de conexión a PostgreSQL debemos
primero instalar python, luego instalar una de las librerías de conexión a
Postgresql como esto :
aptget install pythonpgsql
Esto instalará primero el cliente de C de Postgresql y todas sus
dependencias y luego al final la librería pythonpgsql.
5. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
1. Instalando Python (en Linux)
Luego de instalado al ejecutar “python” en la consola tenemos algo como
esto :
6. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
2. El entorno de la consola
El entorno de la consola nos permite “aprender” Python de una manera
mas sencilla, se puede probar funcionalidades sencillas y sintaxis del
lenguaje.
Comandos básicos:
print “hola mundo” < imprime algo en la consola
A = 22 < crea la variable “A”
print A < imprime el valor almacenado en la variable “A”
b=input(“dame #:”) < solicita en la consola ingresar un valor y lo
guarda en la variable “b”
Se puede hacer mas?
7. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
2. El entorno de la consola
(Los ... significan un “tab”)
a=3
if a < 3:
...print “es menor que 3”
else:
...print “es mayor o igual que 3”
presionar 2 veces “enter” en la ultima linea y la consola soltara este
mensaje:
es mayor o igual que 3
Escribir sentencias complejas en la consola es complicado, un error de
sintaxis hace volver a escribir toda la sentencia, esto es muy incómodo.
8. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
2. El entorno de la consola
Para programar en Python es mejor utilizar un editor de texto cualquiera o
alguno especializado en este lenguaje, grabar el programa como un
archivo de extensión “.py” (no obligatorio) y luego ejecutarlos así:
python holamundo.py
El resultado lo veremos en la consola del sistema operativo.
9. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
3. Variables y constantes
Python maneja varios tipos de datos, el tipo corresponde al tipo de dato
con el cual se inicializa la variable.
Tipos soportados:
Cadenas (strings)
Enteros
Punto Flotante
Boolean
Comparar los resultados:
A=10 A=10.0
print A/3 print A/3
10. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
3. Variables y constantes
Existe un tipo “null” que en Python se conoce como “none”.
G=None
if G is None:
..print “G es nulo”
else:
...print “G tiene algo:
La respuesta es :
G es Nulo
Los tipos boolean se asignan así:
a=True <tome en cuenta la primera letra en mayúscula
b=False
11. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
3. Variables y constantes
Arreglos.
En Python el concepto de Arreglo es mucho mas especializado.
* La “lista”, es un conjunto de datos ingresados en una estructura única,
no necesitan ser del mismo tipo (el índice empieza en 0):
A=[1,4,6,'apesol']
for valor in A:
...print valor
El resultado es :
Elemento 0: 1
Elemento 1: 4
Elemento 2: 6
Elemento 3: apesol
Practica : escribir “print A[3]”
12. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
3. Variables y constantes
Arreglos.
* La “lista”, incorpora el método “insert” para añadir mas elementos, el
método “append” añade un valor adicional inmediatamente al final de la
lista y el comando “del” elimina elementos de la lista de una posición
determinada.
A.insert(4,'chicha')
del A[2]
13. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
3. Variables y constantes
Arreglos.
* Las “tuplas”, son conjuntos de datos como en una lista pero es
inmutable, no se puede añadir o borrar elementos.
A='a',2,'c',4
for valor in A:
...print valor
Los elementos entre paréntesis denotan una tupla dentro de otra, este
principio se cumple en la “lista”.
A='a',2,'c',4,('e',6)
for valor in A:
...print valor
14. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
3. Variables y constantes
Arreglos.
* Los “diccionarios” son como los arreglos tradicionales, tienen un índice
y un valor como parte de su estructura, se puede añadir y quitar datos.
Arreglo={'a':123,'b':'hola mundo',3:122}
print Arreglo['b']
ahora veamos que obtenemos con esto:
for c in Arreglo:
...print c
Y ahora así:
for c in Arreglo:
...print Arreglo[c]
15. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
3. Variables y constantes
Arreglos.
La función “len()” permite obtener la cantidad de elementos dentro de
una lista, tupla o diccionario.
El comando “del” permite eliminar un elemento en el diccionario
haciendo mención al mismo y su índice.
Para insertar un elemento en un arreglo simplemente haga mención del
mismo y coloque un nuevo nombre de índice (numero o texto)
Podemos crear listas de diccionarios:
a=({1:12,2:13},{1:21,2:23})
for c in a:
...print c
...for d in c:
......print c[d]
16. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
4. Trabajo con Tipos de Datos
* Type, permite ver el tipo de datos de una variable
x=10 x=122332423423434 x='abc'
type(x) type(x) type(x)
x=10.0 x=None x=(1,2,3) x={1:10,2:20,3:30}
type(x) type(x) type(x) type(x)
* Int y float, convierte un float a un entero y de entero a float, puede
usarse con cadenas de texto pero que no tengan literales
x=10.0 x=10
print x/3 print x/3
print int(x)/3 print float(x)/3
* Operadores +=, =, *=, /= para suma, resta, multiplicación y división
rápida con el valor ya almacenado
17. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
4. Trabajo con Tipos de Datos
* %, el modulo en las divisiones enteras
* //, para la división entera
print 9 % 2
print 9 // 2
* str, transforma cualquier objeto/variable a cadena de caracteres
x=12
print str(x)+'<el numero'
* bool, permite transformar una variable a booleano, no muy práctico.
X=12 x=0 x='abc' x='' x=None
print bool(x) print bool(x) print bool(x) print(x) print(x)
18. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
5. Trabajo con Cadenas
El manejo de cadenas en Python es bastante avanzado y no requiere
funciones externas.
Concatenar:
a='hola' a='aaa'
b='mundo' a+='bbb'
print a+' '+b print a
Subcadena (el indice siempre empieza en 0):
a='hola mundo'
print a[3] < un dígito
print a[5:10] < una sección de cadena, como “substr”
print a[5:] < desde la posición 5 hasta el final de la cadena
19. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
5. Trabajo con Cadenas
Subcadena (el indice siempre empieza en 0):
a='hola mundo'
print a[:5] < corta desde el inicio hasta la posición 5
print a[:5] < corta los últimos 5 caracteres de la cadena
print a[2:5] < corta desde la posición 2 hasta los 5 últimos
caracteres de una cadena
Una manera de armar cadenas formateadas es así:
X=12
Y=11
A=”el valor de X es: %d y de Y es:%d” % (X,Y)
print A
Len, retorna la cantidad de caracteres de una cadena
20. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
5. Trabajo con Cadenas
Una cadena es un objeto que tiene varios métodos asociados a ella
misma tales como :
x = 'Hola, MunDO'
x.title() < primera letra de cada palabra en mayúscula
x.upper() < toda la cadena en mayúscula
x.lower() < toda la cadena en minúsculas
x.capitalize() < primera letra de la cadena en mayúscula
x.count('a') < cuenta la cantidad de 'a' en la cadena
x.find('a,') < ubica la posición de la cadena del texto
ingresado
x.replace('a','4') < reemplaza las 'a' por '4'
x.split(x) < corta la cadena en una lista, cada palabra
es un elemento de la lista
21. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
5. Trabajo con Cadenas
Caracteres especiales como comillas y dobles comillas deben usar el
caracter “” por delante.
a=”y San Martin dijo ”Viva el Peru””
print a
Para repetir cadenas, multipliquela por la cantidad de veces requerida
A='cuy'*5
print A
No se puede cambiar el valor de un caracter de una cadena
A=”cuy”
A[2]='i' < da un error
22. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
6. Estructuras de Control
Operadores de comparacion:
== < igual
<> < diferente
Operadores logicos:
and
or
not
A=1
B=1
if not a <> b:
...print “A no es diferente de B”
23. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
6. Estructuras de Control
IF
if a == b:
...print “a y b son iguales”
elif a > b:
...print “a es mayor que b”
else
...print “a y b son diferentes”
24. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
6. Estructuras de Control
WHILE
X=10
Y=0
while Y < X:
...Y += 1
...print Y
25. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
6. Estructuras de Control
FOR, tiene muchas formas de usarse
En un rango de números :
for a in range(1,10): <ejecuta del 1 al 9
...print a
for a in range(10): <ejecuta del 0 al 9
...print a
En una lista de valores:
for a in (1,10,5,7): < puede ser una tupla o un diccionario
..print a
26. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
6. Estructuras de Control
FOR, tiene muchas formas de usarse
En un rango de números :
for a in range(1,10,2): <ejecuta del 1 al 9 saltando de 2 en 2
...print a
for a in range(10,1,3): <ejecuta del 10 al 1 saltando de 3 en 3
...print a
for a,b in ((1,4),(2,5),(3,6)): < solo se acepta valores numéricos enteros
...print a
...print b
27. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
6. Estructuras de Control
Break, permite salir de un loop
for c in range(1,10): < ejecuta del 1 al 6
...print c
...if c > 5:
......break
Continue, permite volver a iterar sin ejecutar el código que continua en el
loop
for c in range(1,10): < ejecuta del 1 al 5
...if c > 5:
......continue
...print c
28. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
7. Manejo de errores
El comando “try” permite capturar la posibilidad de que se procese un
error en la ejecución del siguiente comando para que el Python no nos
bote del programa.
try:
...a='abc'+123
except:
...print “hay un error”
El “except” responde a diferentes valores dependiendo el comando a
ejecutar, por ejemplo las librerías de PostgreSQL tienen diferentes
“except” dependiendo el tipo de error.
29. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
7. Manejo de errores
try:
...a='abc'+123
except:
...pass < “pass” no hace nada
print “se comio el error”
Esta sentencia da error el código debe continuar debajo del nivel del “try”
try:
...a='abc'+123
...print “aqui debe continuar el programa”
except:
...pass
30. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
7. Manejo de errores
try:
...a='abc'+123
except:
...pass < “pass” no hace nada
print “se comio el error”
Esta sentencia da error el código debe continuar debajo del nivel del “try”
en el editor de consola, ejecutando un archivo “.py” no sucede error y se
continua con la ejecución del programa.
try:
...a='abc'+123
...print “aqui debe continuar el programa si estoy en consola”
except:
...pass
31. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
7. Manejo de errores
try:
...a='abc'+123
except:
...raise ('mensajito') < permite ver todo el traceback del error
corta el programa y permite enviar un mensaje
final personalizado
Existen varios tipos de “except” para el uso común del lenguaje estos son
los mas conocidos:
except RuntimeError:
print “error en el sistema”
except TypeError:
print “error de tipo de datos, como el que estamos generando”
except NameError:
print “cuando se usa un nombre de variable/objeto que no existe”
32. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
7. Manejo de errores
Ejemplo para explicar:
import sys < importa una librería
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
except IOError as err: < tipo de except especial de la
print("I/O error: {0}".format(err)) libreria sys si no Open(myfile.txt”)
except ValueError: < se ejecuta cuando int() no puede
print("Could not convert data to an integer.") convertir el valor a entero
except: < error generico
print("Unexpected error:", sys.exc_info()[0])
raise
36. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
8. Funciones (Usar editor de texto)
Es posible invocar solo ciertos parámetros de una función
def mifuncion (a=1, b=2):
...return a+b
print mifuncion(2,3)
print mifuncion()
print mifuncion(b=3)
Pero si los valores no invocados explícitamente no tiene valor por defecto
el Python devolverá un error.
37. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
8. Funciones (Usar editor de texto)
Es posible pasar mas parámetros de los esperados que se reciben en una
lista o en un diccionario
def mifuncion( parametro, *arguments, **keywords):
print parametro
for parametrosadicionales in arguments:
print “valor:”+parametrosadicionales
for indice in keywords:
print “indice:”+indice
print “valor:”+keywords[indice]
return
mifuncion('a','b','c','d', uno='uno', dos=2, tres='tres')
OjO no se puede usar de indice un número
38. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
8. Funciones (Usar editor de texto)
Las funciones pueden tener funciones anidadas
def anidado1(argumento1):
...def anidado2(argumento2):
......return argumento1 +argumento2
...return anidado2
...
f = anidado1(5) < en este momento no opera nada, solo genera una
f(3) función en memoria
f(4)
d = anidado2(6) < esto da error
print anidado1(5) < esto da un mensaje de sistema
39. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
8. Funciones (Usar editor de texto)
Los parámetros en la función solo están activos dentro de la misma
función, lo declarado fuera de la función puede ser invocado como
“global” y modificado si fuera necesario.
A=6
def valor():
..global A
..print “el valor es : “ + str(A)
..A += 10
..return
valor()
print “el valor es:” + str(A)
40. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
8. Funciones (Usar editor de texto)
Las funciones pueden simular retornar varios valores
def mifuncion(a,b):
return a * 2, b * 3
c ,d = mifuncion(4,5)
print c
print d
41. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
8. Funciones (Usar editor de texto)
Los parámetros vistos hasta el momento son por “referencia”, solo
algunos tipos de datos pueden ser pasados por “valor”, por ejemplo el
integer o el float son inmutables, pero las listas no.
def mifuncion( inmutable,mutable):
inmutable = inmutable + 1
mutable.append(inmutable)
a=15
b=[15]
mifuncion(a,b)
print a
print b
42. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
9. Objetos
En su forma mas básica podemos declarar clases en Python de esta
forma:
class MiClase:
...atributo1=123
...atributo2='abc'
...def metodo1(self):
......print “atributo : “ + str(self.atributo1) + “ “ + self.atributo2
obj=MiClase()
obj.metodo1()
“self” es una palabra reservada y es un equivalente a “this” en otros
lenguajes.
43. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
9. Objetos
En su forma mas básica podemos declarar clases en Python de esta
forma:
class MiClase:
...atributo1=123
...atributo2='abc'
...def metodo2(self, valor):
......print atributo1+valor
obj=MiClase()
obj.metodo2(4)
44. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
9. Objetos
Constructor de clases usar “__init__”
class MiClase2:
...atributo1 = 12
...atributo3 = [1,'b',3]
...def __init__(self, parametro1, parametro2): <”self” se debe declarar en
......if parametro1 <> None: todos los métodos
.........self.atributo1 = parametro1
......self.atributo2 = parametro2
obj=MiClase2(None,2)
print obj.atributo1
print obj.atributo2
print obj.atributo3
obj2=MiClase2(44,2)
print obj2.atributo1
45. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
9. Objetos
Para algunos casos especiales podemos desear convertir un objeto
entero a una cadena de caracteres, esto se hacer con “__str__”
class MiClase:
...def __str__(self)
......return “me converti en cadena”
obj=MiClase()
print obj
También es posible implementar el método “__repr__” para obtener un
efecto similar pero con un texto formateado.
46. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
9. Objetos
Los objetos en Python permiten crear mas atributos de los definidos en la
clase, de manera indiscriminada lastimosamente:
obj=MiClase()
obj.atributoquenoexiste = 1
print obj.atributoquenoexiste
Sin embargo podemos setear que esto no suceda con el método
“__setattr__”
class miClase:
...atributo1 = 123
...def __setattr__(self,nombre, valor):
......print “no me puedes cambiar, el parametro anadido es:” + nombre + “ y el valor es:” + repr(valor)
obj=miClase()
obj.atributoquenoexiste = 1
47. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
9. Objetos
Para el caso de que deseemos advertir sobre el hacer “get” a un atributo
que no existe usamos el método “__getattr__”
class miClase5:
...atributo1 = 123
...def __getattr__(self,name):
......print "lo siento, no existe atributo: " + name
obj = miClase5()
print “valor:” + obj.atributo12
48. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
9. Objetos
Para borrar atributos añadidos al objetos usar “del”:
class miClase5:
...atributo1 = 123
...def __getattr__(self,name):
......print "lo siento no existe tributo : " + name
obj = miClase5()
obj.atributo12=1234
print "voy a borrar el atributo con el valor:" + str(obj.atributo12)
del obj.atributo12
x = obj.atributo12
49. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
9. Objetos
Para evitar que se borren atributos añadidos al objeto
class miClase5:
...atributo1 = 123
..def __delattr__(self,name):
......print "no se puede borrar a tributo: "+ name
obj = miClase5()
obj.atributo12=1
print "voy a borrar:" + str(obj.atributo12)
del obj.atributo12
print “sigo aqui: “ + str(obj.atributo12)
50. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
9. Objetos
Para declarar “set” y “get” a los atributos se debe operar como en este
ejemplo.
class miClase6(object):
...def __init__(self):
......self.__valor = 12 < aquí acabo de declarar un atributo
...def getValor(self): privado al usar “__” delante del nombre
......print "Leyendo numero del get"
.....return self.__valor
...def setValor(self, valor):
......print "Grabando el valor en el set"
......self.__valor = valor
...valor = property(getValor,setValor)
obj = miClase6()
print obj.valor
obj.valor=8
print obj.valor
print obj__valor < va a dar un error
51. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
9. Objetos
Herencia, para declararla hay que decir que la clase implementa otra clase.
class Uno:
...numero1 = 1
...def imprime1(self):
......print "estoy en la clase 1"
class Dos(Uno):
...numero2 = 2
...def imprime2(self):
......print "estoy en la clase 2"
......Uno.imprime1(self)
...def imprime3(self):
......print "estoy en la clase 2, no invoco nada de la clase 1"
a = Dos()
a.imprime2()
a.imprime1()
a.imprime3()
print a.numero1
print a.numero2
52. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
Para conectarse a las bases de datos Python utiliza diversas librerías
especializadas para ello, es común que incluso para una misma base de datos
exista mas de una alternativa de librería como en el caso de MySQL.
Usaremos en estas distribuciones desde repositorios:
centOS: MySQLpython
Ubuntu: pythonmysqldb
http://www.mikusa.com/pythonmysqldocs/
centOS: postgresqlpython
Ubuntu: pythonpgsql
http://www.pygresql.org/pg.html
En ambos casos son las mismas pero se llaman diferente los paquetes
dependiendo la distribución de Linux que se use
53. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdb
try:
dbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')
except MySQLdb.Error:
print “La clase MySQLdb encontro un error”
except:
print “no me pude conectar a la db, error desconocido”
MySQLdb incluye su propio “except”.
54. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdb
try:
dbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')
except MySQLdb.Error, error:
print “error exacto:”
print error
except:
print “no me pude conectar a la db, error desconocido”
en este caso “error” es una lista de 2 elementos con el error exacto, el número y el
mensaje
55. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdb
dbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')
qry=”select * from agentes”
cursor=dbMY.cursor() < antes de ejecutar un query es necesario declarar un cursor
cursor.execute(qry)
print cursor < esto solo nos devuelve la dirección de memoria del cursos
setdata = cursor.fetchall() < bajamos la data del cursor a un contenedor de los datos,
es una lista de listas
print setdata
56. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdb
dbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')
qry=”select * from agentes”
cursor=dbMY.cursor()
cursor.execute(qry)
setdata = cursor.fetchall()
for registro in setdata: < así podemos obtener la data
for campo in registro:
print campo
print “***************fin registro***************”
57. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdb
dbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')
qry=”select * from agentesXXXYYY”
cursor=dbMY.cursor()
try:
cursor.execute(qry)
except MySQLdb.Error, error:
print “error exacto:”
print error
except:
print “error desconocido en el query”
setdata = cursor.fetchall() < si se da un error esto dará otro
for registro in setdata: error
for campo in registro:
print campo
print “***************fin registro***************”
58. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdb
dbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')
qry=”select * from agentesXXXYYY”
cursor=dbMY.cursor()
try:
cursor.execute(qry)
setdata = cursor.fetchall() otro < ponerlo aquí es una manera
for registro in setdata: de resolver el problema
for campo in registro:
print campo
print “***************fin registro***************”
except MySQLdb.Error, error:
print “error exacto:”
print error
except:
print “error desconocido en el query”
59. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdb
dbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')
qry=”select * from agentes”
cursor=dbMY.cursor()
rows=cursor.execute(qry) < esto devuelve la cantidad de registros
print “existen %d registros” % rows
60. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdb
dbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')
qry=”select * from agentes”
cursor=dbMY.cursor()
rows=cursor.execute(qry)
for a in range(1,rows):
c = cursor.fetchone() < así podemos pedir los registros
print c uno por uno
print “Fin registro %d ************************” % a
61. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdb
dbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')
qry=”select * from agentes”
cursor=dbMY.cursor()
rows=cursor.execute(qry)
cursor.close() < cerramos el cursor, liberamos memoria
dbMY.close() < cerramos la conexión a la db, nunca dejar de hacerlo.
62. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
PostgreSQL
import pg
try:
dbPG = pg.connect(dbname='oeprador',user='usuario',passwd='clave',host='localhost')
except TypeError, error:
print "argumentos mal pasado, o demasiado"
print error
except SyntaxError, error:
print "argumento duplicado"
print error
except pg.InternalError, error:
print "se conecto al motor pero este responde negativo a la conexion"
print error
En el caso de la librería de PostgreSQL la mayoría de los métodos del objeto incluyen sus
propias excepciones, por ello se hace necesario consultar la documentación, el parámetro
“error” esta recibiendo el mensaje especifico del error.
63. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
PostgreSQL
import pg
dbPG = pg.connect(dbname='oeprador',user='usuario',passwd='clave',host='localhost')
qry = "insert into tabla values (1,2,3)"
try:
resultado = dbPG.query(qry)
except TypeError,error:
print "Query mal formado"
print error
except pg.ProgrammingError,error:
print “Error producido por la data en si y no de formacion de query”
print error
Existe ademas:
ValueError: empty SQL query or lost connection
pg.InternalError: error during query processing
64. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
PostgreSQL
import pg
dbPG = pg.connect(dbname='oeprador',user='usuario',passwd='clave',host='localhost')
qry = "select * from tabla"
resultado = dbPG.query(qry)
setdata = resultado.getresult() < esto retorna la data como una tupla
print setdata
print “**************************”
setdata2 = resultado.dictresult() < esto retorna la data como un diccionario
print setdata
65. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
PostgreSQL
import pg
dbPG = pg.connect(dbname='oeprador',user='usuario',passwd='clave',host='localhost')
qry = "select * from tabla"
resultado = dbPG.query(qry)
setdata = resultado.dictresult()
for c in setdata:
for d in c:
print d + ":" + str(c[d])
print "**********fin registro"
66. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
10. conexiones a Base de datos
PostgreSQL
Algunas cosas interesantes.
qry = "select * from tabla"
resultado = dbPG.query(qry)
print resultado.listfileds() < devuelve los nombres de los campos de la consulta
print resultado.ntuples() < cantidad de registros que devolvió la consulta
dbPG.close() < nunca olvidar cerrar la conexión
67. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
11. Librería de sistema operativo y tiempo
La librería de sistema operativo nos permite interactuar entre el Python y
el OS directamente.
Podemos mandar comandos de consola completos al OS.
import os
os.system('ls')
La salida del comando la podemos ver en la consola al ejecutar el script
pero no podemos capturarla.
68. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
11. Librería de sistema operativo y tiempo
os.getcwd() < retorna en que directorio estoy
os.chdir('/var/log') < se mueve a otro directorio
Desde la consola Python podemos utilizar 2 comandos muy importantes para ver
las funciones que nos ofrece la librería:
>>> dir(os) < muestra los métodos de la librería
>>>help(os) < es una ayuda en linea de la librería
69. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
11. Librería de sistema operativo y tiempo
La librería de tiempo nos permite trabajar con fechas y horas, para usarla:
import time
print time.asctime() < devuelve una cadena con la fecha y hora.
print time.ctime() < sin parámetro devuelve la fecha actual en cadena.
print time.ctime(12345) < especificando una cantidad de segundos devuelve la
fecha transcurrida desde el “tiempo local” del 31dic de
1969.
print time.localtime() < devuelve la fecha y hora actual en formato numérico
en una lista.
print time.sleep(60) < suspende la ejecución de un código durante el número
de segundos especificado.
70. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
11. Librería de sistema operativo y tiempo
La librería de tiempo nos permite trabajar con fechas y horas, para usarla:
import time
x = time.strptime('20090809','%Y%m%M') < transforma una cadena a fecha (en
print x una lista).
x = time.strftime('%Y%m%M',x) < transforma una fecha a cadena en
print x el formato especificado.
71. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
11. Librería de sistema operativo y tiempo
La librería de tiempo nos permite trabajar con fechas y horas, para usarla:
import time
segundosX = 0
#obtienel a hora actual en segundos
segundos = int(time.time())
print "hora actual:" + time.ctime(segundos)
segundosX = segundos + 60
suma=time.ctime(segundosX)
print "mas 1 minuto:" + suma
segundosX = segundos + 3600
suma=time.ctime(segundosX)
print "mas 1 hora:" + suma
72. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
11. Librería de sistema operativo y tiempo
Existe una librería alterna que es la datetime, esta nos ayuda en operaciones con
fechas.
from datetime import date
fecha1=date.today() < devuelve el día actual
fecha2=date(2009,12,4) < transforma un YYYY,MM,DD en enteros a fecha
x= fecha2 – fecha1 < la operación entre fechas devuelve un tipo de dato
print x “timedelta”, OjO no podemos sumar fecha.
print x.days
print x.seconds
print x.microseconds
Solo los 3 tipos de resultados son almacenados, para convertir a hora o minutos
hay que operar con los “days” o los “seconds”
73. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
11. Librería de sistema operativo y tiempo
Para restar o sumar días:
from datetime import date
from datetime import datetime
hoy = date.today()
nuevafecha = hoy + timedelta(365) < especificamos los dias
print nuevafecha
nuevafecha = hoy timedelta(365)
print nuevafecha
74. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
12. Creando librerías y parámetros entre scripts
Creando tu propia librería
Crear un archivo de texto con la extensión “.py”
touch mate.py
Escribir en este archivo las funciones que se desean programar
def suma(a,b):
return a+b
En el archivo con el código que se desea importar colocar
import mate < debe tener el mismo nombre del archivo físico
print mate.suma(8,4) < especificar el nombre de la librería delante de la
función
75. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
12. Creando librerías y parámetros entre scripts
Creando tu propia librería
La librería puede tener incluidas clases (editar mate.py y añadir)
class clsMate:
X = 0
Y = 0
def divide(self)
return X/Y
En el archivo con el código que se desea importar colocar
obj = mate.clsMate()
obj.X = 10
obj.Y = 5
print obj.divide()
76. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
12. Creando librerías y parámetros entre scripts
Creando tu propia librería
Se pueden importar solo ciertas funciones o clases de la librería
from mate import suma,clsMate
print suma(5,7) < en este caso ya no es necesario hacer precisión de la
obj = clsMate() librería
obj.X=10
obj.Y=5
print obj.divie()
print mate.multiplica(6,9) < esto da error porque no se importo
print multiplica(6,9) < esto da error porque no se importo
77. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
12. Creando librerías y parámetros entre scripts
Pasando parámetros entre scripts
Para pasar parámetros a un script “.py” es necesario hacer uso de la librería “sys”
de la siguiente manera *crear un archivo llamado (parametro.py):
import sys
if (len(sys.argv) > 1 ):
print sys.argv
for c in sys.argv:
print c
En la consola escribir:
python parametro.py parametro1 2,tres 'cuatro 4'
78. http://www.eqsoft.net CURSO PYTHON
informes@eqsoft.net
NIVEL INICIAL
12. Creando librerías y parámetros entre scripts
Ejecutando directamente un script en Python
Para poder lograr que Linux reconozca directamente que debe usar el interprete de
Python en nuestros scripts es necesario añadir los siguiente en sus scripts:
#!/usr/bin/python
print “hola mundo”
El archivo “.py” debe tener derechos de ejecución:
chmod 777 archivo.py
para ejecutarlo en el mismo directorio:
./archivo.py