Programación Web y Scripting > Python
Un script para vehículos
(1/1)
RadicalEd:
Lo copio tal cual de mi blog =D.
Este script lo desarrollé por que hace algún tiempo tenía en mente como controlar las finanzas con mi bebé (moto honda eco deluxe), al principio lo hicé con una DB e insertando los datos a mano, pero con el tiempo quería saber cuanto me quedaba de gasolina y aceite y más o menos cuando debía cargar, diaríamente estoy gastando alrededor de 100km.
--- Código: SQL ---CREATE TABLE IF NOT EXISTS `gasto` (`id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,fecha date NOT NULL,precio varchar(6) NOT NULL,kilometraje varchar(5) NOT NULL,gasto varchar(25) NOT NULL,PRIMARY KEY (`id`));
--- Código: Python ---#!/usr/bin/env python#Desarrollado por RadicalEd import sys, osimport pynotify, MySQLdb #Tomado nuevamente del blog de Daniel Garcia Morenocomando = 'zenity --text "Kilometraje actual" --entry'entrada, salida = os.popen2(comando)kmact = salida.read()kmact = int(kmact.strip())#Lo convertimos a entero #Nos conectamos a la DBconn = MySQLdb.connect(host="localhost", user="usdist", passwd="clio1214", db="paginafiles")#Creamos un cursor para ejecutar las sentencias SQLcursor = conn.cursor()#El script a ejecutarcursor.execute('SELECT * FROM gasto')registros = int(cursor.rowcount) #Instanciamos variables#Se que dieciocho mil pesos en mi moto son 450km de gasolina (100%)dinerogas, kmgasolina = 18000, 450.0#Se que trece mil cuatrocientos en mi moto son 1500km de aceite (100%)dineroace, kmaceite = 13400, 1500.0gasolina = 0aceite = 0mostrar = '' #Mensaje a mostrar #Campos de la DBfor x in range(registros): row = cursor.fetchone() gasto = row[4] #Tipo de gasto #Para hacer la suma de cuanto llevamos en GASOLINA y en ACEITE if gasto == 'GASOLINA': gasolina += int(row[2]) ultkmgas = int(row[3]) #Ultimo kilometraje gasolina ultfechagas = row[1] #Ultima fecha gasolina elif gasto == 'ACEITE': aceite += int(row[2]) ultkmace = int(row[3]) #Ultimo kilometraje aceite ultfechaace = row[1] #Ultima fecha aceite #Calculosgastogas = kmact - ultkmgas #Gasto gasolinakmrestgas = kmgasolina - gastogas #Kilometros restantes gasolinaporcentgas = (kmrestgas / kmgasolina) * 100 #Porcentaje restante gasolinagastoace = kmact - ultkmace #Gasto aceitekmrestace = kmaceite - gastoace #Kilometros restantes aceiteporcentace = (kmrestace / kmaceite) * 100 #Porcentaje restante gasolina #Alertas para gasolina y aceiteif kmrestgas <= 20: mostrar += 'Favor tanquear a tiempo, solo queda el %d%s restante de gasolina' % (porcentgas, chr(37)) if kmrestace <= 100: mostrar += 'nnFavor cambiar aceite a tiempo, solo queda el %d%s restante de este' % (porcentace, chr(37)) mostrar += "nnHas gastado %dkm en Aceite, te queda un %d%s osea %dkm" % (gastoace, porcentace, chr(37), kmrestace)mostrar += "nnHas gastado %dkm en Gasolina, te queda un %d%s osea %dkm" % (gastogas, porcentgas, chr(37), kmrestgas) if __name__ == '__main__': if not pynotify.init("Al no iniciarse"): #Nos salimos sys.exit(1) n = pynotify.Notification(mostrar)n.set_timeout(15000) #Que se muestre el mensaje durante 15 segundos #Sino se muestraif not n.show(): print "Fallo al mostrar la info" sys.exit(1)
La insercción de los datos no tiene nada que ver con el script, por eso no la pusé, ese paso siempre lo hago por phpMyAdmin :P
Para que el programa funcione cuando inicia sesión por lo menos en Linux Ubuntu van a Sistema --> Preferencias --> Sesiones --> Programas de inicio; en esta parte colocan el script. Acá un videito de como funciona la vaina.
Ojala les sirva de algo, en mi blog deje un video para ver el funcionamiento.
http://radicalpython.blogspot.com/2009/ ... otify.html
PD. No funciona en Windows :P jejeje
NRM:
gracias por aportar con tu codigo.
yo por lo general no utilizo un SGBD como MySQL para aplicacions pequeñas o que no tengan un requerimiento complejo con respecto a la DB.
te recomiendo que uses SQLite que ya viene incluido con python, no requiere de levantar servicios y el script andaria en cualquier OS que tenga python.
aca[1] tenes algo de info de SQLite sobre python.
saludos
nrm
[1] - http://docs.python.org/library/sqlite3.html
RadicalEd:
gracias NRM; ya lo había pensado en SQLite por el tamaño y los servicios, la vaina es que desde mucho antes había creado esa tabla en MySQL y llevó mis registros de la moto ahí, además las tablas de todas las aplicaciones que he hechó las tengo en una sola DB y pues para no perderme búscando por diferentes lados la creé ahí.
Gracias por el enlace, lo voy a revisar.
Navegación
Ir a la versión completa