Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/08/2009, 21:04
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: python y mysql

Por favor utiliza la etiqueta HIGHLIGHT, para que aparesca los espacios y el resaltado de la sintaxis.

Hice algunas correcciones y mejoras, espero que te ayude

Código python:
Ver original
  1. import MySQLdb
  2. import sys
  3. import datetime
  4.  
  5. db=MySQLdb.connect(host='localhost',user='root',passwd='pass',db='pruebas')
  6. C=db.cursor()
  7.  
  8. #--------------------------------------------------------------------------
  9. def menu(N):
  10.     opc = int(N)
  11.     if opc == 1:
  12.         num = raw_input('Cuantos quieres mostrar?: ')
  13.     mostrar_tabla(int(num))
  14.     elif opc == 2:
  15.         actualizar()
  16.     else:
  17.         exit()
  18.  
  19. #--------------------------------------------------------------------------
  20. def mostrar_tabla(N):
  21.     keri = 'SELECT * FROM tabla ORDER BY Fecha DESC;'
  22.     C.execute(keri)
  23.     res = C.fetchall()
  24.     num = int(N)
  25.     x = c_nc(num)
  26.     i=0
  27.     while i < num -1 :
  28.         print res[i][0],'|',res[i][1],res[i][2],res[i][3],res[i][4],res[i][5],'|',centro_no(res[i][1]),centro_no(res[i][2]),centro_no(res[i][3]),centro_no(res[i][4]),centro_no(res[i][5]),'|',arriba_abajo(res[i][1]),'|',uno_dos(arriba_abajo(res[i][2]),arriba_abajo(res[i][3])),'*',uno_dos(arriba_abajo(res[i][4]),arriba_abajo(res[i][5])),'|',x[0][i],'|',x[1][i]
  29.         i = i + 1
  30.  
  31. #---------------------------------------------------------------------------
  32. def actualizar():
  33.     #keri = 'SELECT * FROM tabla1;'
  34.     #C.execute(keri)
  35.     #res = C.fetchall()
  36.     n = [] #Lista vacia, bien
  37.     i = 0
  38.  
  39.     anio = ""
  40.     mes = ""
  41.     dia = ""
  42.     while not anio or not mes or not dia:
  43.         anio = int(raw_input('Introduce anio:'))
  44.         mes = int(raw_input('Introduce mes:'))
  45.         dia = int(raw_input('Introduce dia:'))
  46.  
  47.     dait = datetime.date(anio,mes,dia)
  48.  
  49.     num = raw_input('Introduce el numero:')
  50.     numero = list(num)
  51.     n = []#Misma lista vacia
  52.  
  53.     while not numero or len(numero) != 5:
  54.         num = raw_input('Introduce el numero:')
  55.         numero = list(num)
  56.  
  57.     i=0
  58.     while i < len(numero):
  59.         n.append(int(numero[i]))
  60.         i += 1
  61.     #Todo ese codigo lo simplificas son la siguiente orden
  62.     #n = [int(i) for i in numero]
  63.     #Mucho mas simple y pythonesco ;D
  64.  
  65.     #aquí cambie el query para probar la insercion...parece que la realiza pero no inserta realmente en la tabla, tampoco como el codigo que habias puesto...
  66.  
  67.     otrokeri = "INSERT INTO tabla(Fecha, No1, No2, No3, No4, No5) VALUES('2009-08-06', '1', '2', '3', '4', '5');"
  68.     C.execute(otrokeri)
  69.     db.commit() #Con esto ya va a insertar
  70.  
  71. #---------------------------------------------------------------------------
  72. def arriba_abajo(N):
  73.     num = int(N)
  74.     if num < 5:
  75.         return 'a'
  76.     else:
  77.         return 'A'
  78. #---------------------------------------------------------------------------
  79. def centro_no(N):
  80.     num = int(N)
  81.     if num == 2 or num == 7:
  82.         return 'C'
  83.     elif num == 0 or num == 1 or num == 5 or num == 6:
  84.         return 'v'
  85.     else:
  86.         return '^'
  87.  
  88. #---------------------------------------------------------------------------
  89. def uno_dos(N1,N2):
  90.     n1=N1
  91.     n2=N2
  92.  
  93.     if n1 == 'a' and n2 == 'a':
  94.         return '1'
  95.     elif n1 == 'a' and n2 == 'A':
  96.         return '2'
  97.     elif n1 == 'A' and n2 == 'a':
  98.         return '3'
  99.     else:
  100.         return '4'
  101. #---------------------------------------------------------------------------
  102. def c_nc(N):
  103.     keri = 'SELECT * FROM tabla1 ORDER BY Fecha DESC;'
  104.     C.execute(keri)
  105.     res = C.fetchall()
  106.     x = int(N)
  107.     NUM = []
  108.     NUM1= []
  109.     NUM2= []
  110.     LIS = []
  111.     LIS1= []
  112.     LIS2= []
  113.     i=j=0
  114.     i2=1
  115.  
  116.     while i < x:
  117.         NUM.append (uno_dos(arriba_abajo(res[i][2]), arriba_abajo(res[i][3])))
  118.         NUM1.append (uno_dos(arriba_abajo(res[i][4]), arriba_abajo(res[i][5])))
  119.         i += 1
  120.  
  121.     NUM2.append(NUM)
  122.     NUM2.append(NUM1)
  123.  
  124.     while j < x and i2 < x:
  125.         LIS.append(checar_c_nc(NUM2[0][j], NUM2[0][i2]))
  126.         LIS1.append(checar_c_nc(NUM2[1][j], NUM2[1][i2]))
  127.         j += 1
  128.         i2 += 1
  129.  
  130.     LIS2.append(LIS)
  131.     LIS2.append(LIS1)
  132.  
  133.     return LIS2
  134. #---------------------------------------------------------------------------
  135. def checar_c_nc(N1,N2):
  136.     n1 = N1 #Que caso tiene esto?
  137.     n2 = N2
  138.  
  139.     if n1 == "1" and n2 == "4" or n1 == "4" and n2 == "1":
  140.         return 'C'
  141.     elif n1== "2" and n2 == "3" or n1 == "3" and n2 == "2":
  142.         return 'C'
  143.     else:
  144.         return '-'
  145. #----------------------------------------------------------------------------
  146.  
  147. mostrar_tabla(3)
  148.  
  149. print 'MENU:'
  150. print '1-->Mostrar mas Datos'
  151. print '2-->Actualizar Datos'
  152. print '3-->Salir'
  153. opcion = raw_input("Que deseas hacer?: ")
  154.  
  155. menu(opcion)

Intenta hacer tu codigo mas pythonesco, usando for para iterar las listas, siguiendo los estandares, etc...