Curso python
-
Upload
eq-soft-consultoria-y-soporte-eirl -
Category
Education
-
view
7.314 -
download
0
description
Transcript of Curso python
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
Día 1: 1. Instalando Python (en Linux) 2. El entorno de consola 3. Variables y constantesDía 2: 4. Trabajo con tipos de datos 5. Trabajo con cadenas 6. Estructuras de controlDía 3: 7. Manejos de errores 8. FuncionesDía 4: 9. Objetos 10. Conexiones a base de datos, Objetos de Mysql y PgsqlDía 5: 11. Librería de sistema operativo y tiempo 12. Creando librerías y parámetros entre scripts
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 PHPb. Su engine es mas ligero que el de PHP o Javac. Es multiplataformad. Soporte para programar scripts, gui apps y web appse. Altamente escalablef. Es SIMPLE
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
1. Instalando Python (en Linux)
Luego de instalado al ejecutar “python” en la consola tenemos algo como esto :
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 consolaA = 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?
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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)EnterosPunto FlotanteBoolean
Comparar los resultados:
A=10 A=10.0print A/3 print A/3
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
3. Variables y constantes
Existe un tipo “null” que en Python se conoce como “none”.
G=Noneif 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úsculab=False
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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: 1Elemento 1: 4Elemento 2: 6Elemento 3: apesol
Practica : escribir “print A[3]”
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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]
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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',4for 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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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]
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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]
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 literalesx=10.0 x=10print x/3 print x/3print int(x)/3 print float(x)/3
* Operadores +=, =, *=, /= para suma, resta, multiplicación y división rápida con el valor ya almacenado
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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=12print str(x)+'<el numero'
* bool, permite transformar una variable a booleano, no muy práctico.
X=12 x=0 x='abc' x='' x=Noneprint bool(x) print bool(x) print bool(x) print(x) print(x)
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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ígitoprint a[5:10] < una sección de cadena, como “substr”print a[5:] < desde la posición 5 hasta el final de la cadena
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 5print a[:5] < corta los últimos 5 caracteres de la cadenaprint 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=12Y=11A=”el valor de X es: %d y de Y es:%d” % (X,Y)print A
Len, retorna la cantidad de caracteres de una cadena
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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úsculax.upper() < toda la cadena en mayúsculax.lower() < toda la cadena en minúsculasx.capitalize() < primera letra de la cadena en mayúsculax.count('a') < cuenta la cantidad de 'a' en la cadenax.find('a,') < ubica la posición de la cadena del texto ingresadox.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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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'*5print A
No se puede cambiar el valor de un caracter de una cadena
A=”cuy”A[2]='i' < da un error
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
6. Estructuras de Control
Operadores de comparacion:
== < igual<> < diferente
Operadores logicos:
andornot
A=1B=1if not a <> b:...print “A no es diferente de B”
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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”
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
6. Estructuras de Control
WHILE
X=10Y=0while Y < X:...Y += 1...print Y
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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'+123except:...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.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
7. Manejo de errores
try:...a='abc'+123except:...pass < “pass” no hace nadaprint “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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
7. Manejo de errores
try:...a='abc'+123except:...pass < “pass” no hace nadaprint “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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
7. Manejo de errores
try:...a='abc'+123except:...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”
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
7. Manejo de errores
Ejemplo para explicar:
import sys < importa una libreríatry: 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 enteroexcept: < error generico print("Unexpected error:", sys.exc_info()[0]) raise
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
8. Funciones (Usar editor de texto)
def mi_funcion (mi_parametro):...sentencias
Ejemplo:
def mi_raizcuadrada( pNumero):...return (pNumero * pNumero)
print mi_raizcuadrada(4)print mi_raizcuadrada(mi_raizcuadrada(4))
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
8. Funciones (Usar editor de texto)
Para asignar valores por defecto a los parametros:
def mi_raizcuadrada( pNumero=9):...return (pNumero * pNumero)
print mi_raizcuadrada(4)print mi_raizcuadrada()
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
8. Funciones (Usar editor de texto)
def mi_funcion (mi_parametro):...sentencias
Ejemplo:
def mi_raizcuadrada( pNumero):...return (pNumero * pNumero)
print mi_raizcuadrada(4)print mi_raizcuadrada(mi_raizcuadrada(4))
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 parametrofor parametrosadicionales in arguments:
print “valor:”+parametrosadicionalesfor indice in keywords:
print “indice:”+indiceprint “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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 memoriaf(4)
d = anidado2(6) < esto da errorprint anidado1(5) < esto da un mensaje de sistema
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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=6def valor():..global A..print “el valor es : “ + str(A)..A += 10..return
valor()print “el valor es:” + str(A)
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 cprint d
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 + 1mutable.append(inmutable)
a=15b=[15]mifuncion(a,b)print aprint b
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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)
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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.atributo1print obj.atributo2print obj.atributo3obj2=MiClase2(44,2)print obj2.atributo1
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 = 1print 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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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=1234print "voy a borrar el atributo con el valor:" + str(obj.atributo12)del obj.atributo12x = obj.atributo12
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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=1print "voy a borrar:" + str(obj.atributo12)del obj.atributo12print “sigo aqui: “ + str(obj.atributo12)
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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.valorobj.valor=8print obj.valorprint obj__valor < va a dar un error
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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.numero1print a.numero2
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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: MySQLpythonUbuntu: pythonmysqldbhttp://www.mikusa.com/pythonmysqldocs/
centOS: postgresqlpythonUbuntu: pythonpgsqlhttp://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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdbtry:
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”.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdbtry:
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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdbdbMY = 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 cursorcursor.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 listasprint setdata
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdbdbMY = 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 datafor campo in registro:
print campoprint “***************fin registro***************”
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdbdbMY = 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***************”
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdbdbMY = 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 manerafor 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”
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdbdbMY = 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 registrosprint “existen %d registros” % rows
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdbdbMY = 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 registrosprint c uno por unoprint “Fin registro %d ************************” % a
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
10. conexiones a Base de datos
MySQL
import MySQLdbdbMY = 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.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 errorexcept SyntaxError, error: print "argumento duplicado"
print errorexcept 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.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
10. conexiones a Base de datos
PostgreSQL
import pgdbPG = 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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
10. conexiones a Base de datos
PostgreSQL
import pgdbPG = 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 tuplaprint setdata
print “**************************”
setdata2 = resultado.dictresult() < esto retorna la data como un diccionarioprint setdata
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
10. conexiones a Base de datos
PostgreSQL
import pgdbPG = 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"
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 osos.system('ls')
La salida del comando la podemos ver en la consola al ejecutar el script pero no podemos capturarla.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 (enprint x una lista).
x = time.strftime('%Y%m%M',x) < transforma una fecha a cadena enprint x el formato especificado.
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 segundossegundos = int(time.time())print "hora actual:" + time.ctime(segundos)
segundosX = segundos + 60suma=time.ctime(segundosX)print "mas 1 minuto:" + suma
segundosX = segundos + 3600suma=time.ctime(segundosX)print "mas 1 hora:" + suma
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 datoprint x “timedelta”, OjO no podemos sumar fecha.print x.daysprint x.secondsprint 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”
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL INICIAL
11. Librería de sistema operativo y tiempo
Para restar o sumar días:
from datetime import datefrom datetime import datetime
hoy = date.today()
nuevafecha = hoy + timedelta(365) < especificamos los diasprint nuevafecha
nuevafecha = hoy timedelta(365) print nuevafecha
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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 = 0Y = 0def divide(self)
return X/Y
En el archivo con el código que se desea importar colocar
obj = mate.clsMate()obj.X = 10obj.Y = 5print obj.divide()
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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íaobj.X=10obj.Y=5print obj.divie()
print mate.multiplica(6,9) < esto da error porque no se importoprint multiplica(6,9) < esto da error porque no se importo
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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'
http://www.eqsoft.net [email protected]
CURSO PYTHONNIVEL 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/pythonprint “hola mundo”
El archivo “.py” debe tener derechos de ejecución:
chmod 777 archivo.py
para ejecutarlo en el mismo directorio:
./archivo.py