Mostrando entradas con la etiqueta Python. Mostrar todas las entradas
Mostrando entradas con la etiqueta Python. Mostrar todas las entradas

16 diciembre 2012

Acciones básicas de Python manejando una base de datos SQLite3


Buenas tardes!

Después de día y medio programando he llegado a terminar esta muestra sencilla muestra de cómo interactuar con Python en una base de datos SQLite3

Para esto cree la clase AccionesSQL. Dentro de ella, la primera linea importa la librería que necesitaremos para funcionar : import sqlite3

El segundo trozo de código relevante está en el constructor de la clase, función __init__(self): Aquí se crea un objeto conexión que se conectara con la base de dato que queramos. Después se crea   un cursor, que es propio de la conexión creada.

La función insertarTelefonoBD es el tercer trozo importante. Aquí se hace una inserción. Para esto usamos una sentencia SQL ejecutada sobre el cursor. Y al punto se realiza un commit porque sino  la inserción no se  hace efectiva.

Poco más abajo tenemos la función  modificarTelefonoBD. Aquí, se desarrolla una actualización de un campo existente y salvo la sentencia SQL todo es igual a caso anterior. Lo mismo pasa con la función suprimirTelefonoBD. Mas esta, suprime.

La penúltima función es listarTelefonosBD y en ella se cargan y muestran todos los registros de la tabla indicada. Se puede añadir una clausula WHERE y también una ORDER BY, y así acotaríamos u ordenaríamos.

La función buscarTelefonosBDxNumero busca teléfonos dependiendo de la opción indicada. Me apeteció hacer 4 tipos de búsqueda: coincidencia total, coincidencia parcial, que empezase por un valor determinado o que acabase según un valor. Luego, para finalizar recorrí el cursor donde se guardaron los registros resultantes, y mostré los datos guardados.

A continuación, el código integro:

import sqlite3 
import sys
class AccionesSQL:
    def __init__(self): 
        self.conexion=sqlite3.connect('listinTelefonico.sqlite')
        self.cursor=self.conexion.cursor()

    def insertarTelefonoBD(self,nombre1,numero1, notas1):
        SQL='insert into Telefonos (Nombre, NumeroTelefono, Notas) values("'+nombre1+'","'+numero1+'","'+notas1+'")'
        self.cursor.execute(SQL)
        self.conexion.commit()
        print 'se ha insertado exitosamente'

    def modificarTelefonoBD(self,id1, nombre1, numero1, notas1):
        SQL='update Telefonos set Nombre="'+ nombre1 + '",NumeroTelefono="' + numero1 + '", Notas="'+notas1 +'" where id='+str(id1)
        self.cursor.execute(SQL)
        self.conexion.commit()
        print 'modificacion exitosa'

    def suprimirTelefonoBD(self, id):
        SQL='delete from Telefonos where ID='+str(id)
        self.cursor.execute(SQL)
        self.conexion.commit()

    def listarTelefonosBD (self):
        SQL = 'select * from Telefonos order by nombre '
        self.cursor.execute(SQL)
        for row in self.cursor:
            print "%s --> %s --> %s" % (row[0],row[1],row[2])

    def buscarTelefonosBDxNumero(self, numero, opcion):
        SQL='HOLA'
        if opcion==1:
            print 'Numeros que terminan por ' + numero
            SQL = 'select * from Telefonos where NumeroTelefono like "%'+numero +'"'
            self.cursor.execute(SQL)
        elif opcion==2:
              print 'Numeros que contienen el numero ' + numero
              SQL = 'select * from Telefonos where NumeroTelefono like "%'+numero +'%"'
              self.cursor.execute(SQL)
        elif opcion==3:
            print 'Numeros que empieza exactamente son el numero ' + numero
            SQL = 'select * from Telefonos where NumeroTelefono = "'+numero +'"'
            self.cursor.execute(SQL)
        elif opcion==4:
            print 'Numeros que empizan por ' + numero
            SQL = 'select * from Telefonos where NumeroTelefono like "'+numero + '%"'
            self.cursor.execute(SQL)
        for row in self.cursor:
            print "%s --> %s --> %s" % (row[0],row[1],row[2])

Esta parrafada que se gestiona en diferentes funciones la llamo desde otra clase según procede. Se llama Telefonos y su código es este:


from AccionesSQL import AccionesSQL
        
class Telefonos:

    def __init__(self,nmb1,tlf1,nts1):
        self.Nombre = nmb1
        self.NumTelefono = tlf1
        self.Notas = nts1
        self.ID=0    
        
    def imprimir(self):
        print self.Nombre + " --> " + self.NumTelefono
        
    def insertar(self):
        a1=AccionesSQL()
        a1.insertarTelefonoBD(self.Nombre,self.NumTelefono,self.Notas)
        
    def modificar(self, id1, nombre1, numeroTelefono1, notas1):
        a1=AccionesSQL()
        a1.modificarTelefono(id1, nombre1, numeroTelefono1, notas1)
        
    def suprimir (self, id1):
        a1=AccionesSQL()
        a1.suprimirTelefonoBD(id1)
    
    def listar(self):
       a1=AccionesSQL()
       a1.listarTelefonosBD()
       
    def buscarPorNumero (self, numero1, op1):
        a1=AccionesSQL()
        a1.buscarTelefonosBDxNumero(numero1,op1) 

La sentencia from AccionesSQL import AccionesSQL sirve para importar el código creado en la clase anterior. De esta manera podremos funcionar con las funciones anteriores llamándolas desde u objeto de esa clase.

Así por ejemplo en la función  insertar podremos utilizar la función insertarTelefonoBD después de haber cread un objeto. Y en las diferentes funciones, el funcionamiento es igual.

Si he creado dos clases no ha sido por ir de listo, sino porque así todo funciona mejor. Es más sencillo y eficiente.


Saludos.

El zen de Python



Estos son los principios que todo buen programador de Python debe cumplir para considerarse tal, fueron redactados por el padre del lenguaje: Tim Peters:


1. Bello es mejor que feo.
2. Explícito es mejor que implícito.
3. Simple es mejor que complejo.
4. Complejo es mejor que complicado.
5. Plano es mejor que anidado.
6. Disperso es mejor que denso.
7. La legibilidad cuenta.
8. Los casos especiales no son tan especiales como para quebrantar las reglas.
Aunque lo práctico gana a la pureza.
9. Los errores nunca deberían dejarse pasar silenciosamente.
10. A menos que hayan sido silenciados explícitamente.
11. Frente a la ambigüedad, rechaza la tentación de adivinar.
12. Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo.
13. Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.
Ahora es mejor que nunca.
14. Aunque nunca es a menudo mejor que ya mismo.
15. Si la implementación es difícil de explicar, es una mala idea.
16.Si la implementación es fácil de explicar, puede que sea una buena idea.
17. Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas!


06 febrero 2012

Planes de futuro con Linux


Otro día sin ir a trabajar. Esta mañana, abrigado por mi edredón, pensé que será buena idea instalarme una versión de Linux para aventurarme en ese sistema operativo al tiempo que programo en Python y con MySQL. Así hago todo con Software libre algo qu siempre será una buena opción. No obstante esperaré a que me reparen mi querido ordenador "don me reinicio tantas veces me sale de los cojones". Pedazo hioputa está hecho!!

22 diciembre 2011

Python: Script que me abre una página web u otra según un numero al azar

Este es un programita breve y que se podría abreviar más, que elige al azar una emisora de radio para abrirla en un navegador.

En el primer import importo la función shuffle que es propia de la libreria random. En la segunda importo la libreria webbrowser.
En la tercera creo una lista con los nombres de las tres emisoras.
En la cuarta llamo a la función shuffle. Esta función reorganiza el listado al azar.
En las quinta y sexta imprimo la lista y el primer elemento de la lista respectivamente. Estas lineas de código las escribí para verificar el exito del la función shuffle. Pero bien podrian quitarse,... ¿para lo quéd hacen?
Luego, abro una ruta u otra dependiendo del nombre de emisora seleccionado utilizado la función open_new de la libreria webbrowser.

from random import shuffle
import webbrowser
listaDeEmisoras=["Kiss fm","M 80","Europa fm"]
shuffle(
listaDeEmisoras)
print
listaDeEmisoras
print
listaDeEmisoras[0]
if (listaDeEmisoras[0]=="Kiss fm"):
  webbrowser.open_new("http://www.kissfm.es/player/kissplayer/index.php") elif (listaDeEmisoras[0]=="Europa fm"):
  webbrowser.open_new("www.europafm.com/directo/")
elif (
listaDeEmisoras[0]=="M 80"):
  webbrowser.open_new("http://www.m80radio.com/multimedia/radios.html")


Y hasta aquí todo. Solo falta poner el .exe de este programa en Inicio para que al iniciarse Windows se ejecute.

Saludos.

¡Y FELIZ NAVIDAD!

18 diciembre 2011

Ejemplo básico de interface gráfca de usuario con Python

Para hacer interfaces gráficas utilizando Python existen muchas librerias que se pueden descargar e instalar en el equipo. Aquí hay un listado http://wiki.python.org/moin/GuiProgramming. No obstante para este ejemplo se usa Tkinter. Siendo está ya la integrada al instalar Python.

En elejemplo de hoy vamos a utilizar Tkinter para crer un botón que al ppulsarlo nos escriba la palabra "Hola".

En primer lugar hacemos la importación de la libreria para tener todos sus componentes disponibles:
from Tkinter import *

En segundo lugar creamos la ventana principal. Para ello usamos Frame, que es uno de los componentes de la libreria Tkinter. Frame es la ventana principal.
frame=Frame()

Para visualizar el texto utilizaremos el componente Entry de Python porque este componente sirve para meter o visualizar una linea. En cambio si fuesen varias utilizariamos Text.

Para crear nuestro cmpo de texto necesitamos crear una variable del tipo StringVar. Esta variable simplemente contiene una caja de texto le diremos a nuestra caja de texto que en ella guarde el texto. La forma de hacerlo es así de sencilla:
v = StringVar() campoTexto = Entry(frame, textvariable=v )
Con esto hemos creado la variable v de tipo StringVar y luego hemos creado campoTexto de tipo Entry. Los parametros: frame indica donde queremos que vaya el campo de texto y con textvariable=v indicamos cual es la StringVar donde queremos que deje el texto escrito por el usuario o en el que queremos dejr nosotros el texto que se muestre. Los métodos v.get() y v.set() nos van a permitir obtener o fijar el texto.

Para el botón, usaremos el componente Button de Python.
boton=Button(frame, text="Saludar",command=saludando)
Aquí de nuevo, frame, indica donde queremos que aparezca el botón. Con text indicamos que la propiedad text valga "Saludar" y que la función qu se ejecute al pulsar el botón se llame Saludando. Por supuesto esta función se debe de definir antes de escribir este código:
def saludando():
  v.set("Hola")
Esta función simplemente pone Hola dentro del StringVar que asociamos previamente al campo de texto Entry. Cuando se ejecute esta función, se meterá dentro de v un texto "Hola" y este se mostrará en el campo Entry de la ventana.

El código completo es este:

from Tkinter import *

def saludando():
  v.set("Hola")

frame=Frame()
v=StringVar()
campo=Texto=Entry(frame,textvariable=v)
boton=Button(frame,text="Saludar",command=saludando)
buton.pack(side=LEFT)

v = StringVar()
text = Entry(frame, textvariable=v )
text.pack(side=LEFT)

frame.pack()
frame.mainloop()

Nos quedan por explicar algunos detalles:
Para cada widguet (button, entry, frame,...) necesitaremos llamar a su método pack() el cual se encarga de colocar cadda elemento de la ventana dándole el tamaño adecuado. Podemos dejar los parametros vacios, dejando que elija, o bien, indicar la ubicación nosotros mismos. En estas lineas lo pusimos nosotros mismos: text.pack(side=LEFT) y text.pack(side=LEFT). Asi aparecerán en horizontal.

Una vez terminado el programa, para siga activo y la ventana funcionando, debemos meternos en el bucle principal de tratamiento de eventos de frame. Es decir, hacemos la llamada a frame.mainloop(). Si no lo hacemos así, el programa termina inmediatamente y no veremos nada (salvo que escribamos línea a línea en el intérprete de python). Esta llamada lo único que tiene dentro es un bucle infinito, en el que va recogiendo los eventos de teclado o ratón para "despacharlos" a los componentes de la ventana y que estos puedan tratarlos, por ejemplo, el click sobre el botón.



Est articulo lo he sacado de http://chuwiki.chuidiang.org/index.php?title=Ejemplo_b%C3%A1sico_de_interface_gr%C3%A1fica_de_usuario_con_Python.


Saludos. Y mañana mas






18 noviembre 2011

Cálculo de la diferencia en horas y minutos de dos horarios




Estaba meditando como resolver un código que me calculase la diferencia entre dos horas cuando se terminó la jornada laboral. Entonces decidí que tal código lo haría en Python como práctica de un aprendizaje.

Y cómo no, tras un ratejo en el que he disfrutado con Python (ese lenguaje que no gusta a mis compañeros de trabajo al punto del que no le ven ni uso ni futuro), he resuelto el código necesario.








Perdonen por haber puesto en una imagen el códigio fuente pero lo hice por causas mayores: El operador de comparativa (>) era confundido con los delimitadores de las etiquetas de HTML.

El código podria tener más complejidad, pero por hoy esta perfecto. Mañana más.

Saludos!

19 septiembre 2009

¿Qué es App Engine?


App Engine es un servicio de alojamiento de páginas web que presta Google de forma gratuita hasta determinadas cuotas, este servicio permite ejecutar aplicaciones sobre la infraestructura de Google. Si no se cuenta con un dominio propio, Google proporciona uno con la siguiente estructura, midominio.appspot.com. También permite implementar un dominio propio a través de Google Apps. Por el momento las cuentas gratuitas tienen un límite de 500 MB de almacenamiento permanente y la suficiente cantidad de ancho de banda y CPU para casi 5 millones de visitas mensuales, y si la aplicación supera estas cuotas, se pueden comprar cuotas adicionales por un bajo costo.

Actualmente las aplicaciones Google App Engine se implementan mediante los lenguajes de programación Python y Java.











Ir a Google App Engine:
  1. Aquí podrás registrarte, descargar el SDK (Kit de desarrollo) de App Engine, leer la guía de introduccción y ver la galería de aplicaciones.
  2. Realizar una consulta y obtener información.
  3. Actualizar artículos recientes.
  4. Entrar a la comunidad y leer el blog.

En http://aralbalkan.com/2115 he leído literaklmente esto: "¿Sabía usted que ahora puede ejecutar PHP en Google App Engine? No, Google ha añadido oficialmente soporte para PHP aún, pero no sólo tiene que añadir soporte para Java y hay una aplicación de Java llamada PHP en Quercus. Ponga dos y dos juntos y, voilà, usted puede escribir aplicaciones PHP en Google App Engine. Muy dulce."

Habrá que probar.Google es el fúturo más tangible.

Saludos

02 julio 2009

Conociendo Python (1º parte)



Ficha de Python:


Para conocer más a fondo Python visite la wikipedia.


Instalación:

Para programar Python, instalé Python 2.6 descargablé en el sitio oficial de la fundación Python (zona descargas). Y ahí, según tu Sistema Operativo descargas una versión u otra, según tus necesidades. Instalarlo es sencillo. Luego, para codificar necesitarás un editor de texto, guardado en extensión .py, y listo para ser ejecutado, clicando sobre él, si e Windows, si s Linux tu Sistema Operativo habría que darle antes derechos.
La última versión estable es la 2.6 e instala IDLE (Python GUI) que es el Shell de Python (donde iteractivamente se pueden escribir las instruciones. Su uso nos da el resultado de bloques de código, coloreados para colmo de la claridad), el Python Command Line, y Module Docs (sencillamente de esta opción tengo que investigar, pero parece ser que es un módulo cgi de la Python Librery para programar y seguir documentación). Además del habitual desinstalador.
Tras instalarlo si estamos en Windows, hay que navegar hasta Variables de entorno en Propiedades del Sistema:
  • Usamos la tecla de Windows y la de Pausa; pestaña opciones avanzadas; botón Variables de Entorno; Modificar).


  • A continuación, añadimos una nueva ruta a la variable de entorno Path: En mi caso C:\Python26\ A la nueva ruta deberá precederle un ; que significa que se añade otra ruta a las existentes de antemano. Otra nota, En mi caso es C:\Python26\ pero en el suyo es la carpeta donde e ha instalado Python. El 26 en mi caso es la versión.
Estas notas de instalación las he tomado prestadas de Python desde cero


Manual:


Ahora ando con la lectura de un manual, Python para todos, del que puedo decir que hace fácil el aprendizaje de este lenguaje de programación, herramienta en la que está hecho Google.


Saludos

Mis primeras líneas en Python

Para ser esta tarde la primera vez que hago código Python, no va nada mal la cosa.

La primera sentencia "Hola Mundo!!" fue facil de escribir y ejecutar. Una sentencia tan simple como print "Hola mundo!!" que daba como resultado la impresión de la cadena encerrada entre las dobles comillas.

Sin embargo el reto fue conseguir imprimir las dos últimas frases:
n1=4
n2=2
n3 =n1+n2
print "el resultadodo es ", n3
print n1, "+",n2,"=",n3

porque no acertaba a, con exito, trabajar con enteros y cadenas de caracteres. Mas al final lo logré después de haber mirado en San Google (invento desarrollado en Python) y tras varias intentonas frustradas. Como ven hay hasta errores de ortografía pro me importa poco, lo importante es el triunfo, jajajaj



Saludos