Foros del Web » Programando para Internet » Python »

ayuda con consulta en python

Estas en el tema de ayuda con consulta en python en el foro de Python en Foros del Web. hola, necesito modificar una consulta de un programa en python y no tengo mucha idea... lo ke necesito es coger 2 fechas de la base ...
  #1 (permalink)  
Antiguo 06/05/2010, 03:39
 
Fecha de Ingreso: mayo-2010
Mensajes: 2
Antigüedad: 13 años, 11 meses
Puntos: 0
ayuda con consulta en python

hola, necesito modificar una consulta de un programa en python y no tengo mucha idea...

lo ke necesito es coger 2 fechas de la base de datos y comprobar que sean iguales y los que coincidan se muestren. el problema que tengo es que las fechas estan metidas en la base de datos de diferentes formas ej: (21/05/2009 ó 25/04/2007 21:40) . lo que intento es comparar ejecutando antes strftime("%Y") para convertir la fecha en 2009 ó 2007 pero parece k eso no funciona...

a continuacion os muestro la consulta tal como la tengo, creo k no voy muy desencaminado, pero no acabo de hacer k funcione...


resultado = list(InvitadosEdicion.select(AND(InvitadosEdicion. q.tipoForoID == tipoforo,self.get_fechaLlegada == self.get_anioEd.strftime("%Y"))))


lo que esta en negrita es lo que se cumpla, gracias por adelantado.
  #2 (permalink)  
Antiguo 06/05/2010, 09:08
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ayuda con consulta en python

Alto ahí. ¿Las fechas en la base de datos son cadenas? ¿por qué?
Si fuesen DATE o DATETIME podrías compararlas directamente en SQL.

En cualquier caso, ármate primero una consulta SQL que te funcione si los métodos para abstraer el SQL resultan confusos.

¿Qué API estás usando para acceder a la base? ¿qué tipo de datos tienen las fechas en la tabla? ¿qué gestor de base de datos es?


Saludos.
  #3 (permalink)  
Antiguo 07/05/2010, 02:47
 
Fecha de Ingreso: mayo-2010
Mensajes: 2
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: ayuda con consulta en python

pues creo que son tipo DATE. lo que veo que esta ejecutandose en el servidor es cherrypy y turbogears. aqui dejo todo lo que esta importado y lafuncion con la consulta completa.

la linea 43 de la consulta es una modificacion de la 42, que es la original y donde quiero meter la comparacion entre los años.

perdonad si no nos soy muy claro pero es k no se nada de python y estoy mirandolo ahora. pero creo que este programa es mucho para empezar, al menos para mi...

Código Python:
Ver original
  1. # -*- coding: utf-8 -*-
  2.  
  3. from turbogears import controllers, expose, redirect
  4. from turbogears import validate, validators, flash, error_handler
  5. from festibase.model import Entidad
  6. #from turbogears import identity
  7. from turbogears.widgets import *
  8. from turbogears import widgets
  9. from turbogears import paginate
  10. from festibase.utils import *
  11. from festibase.ordenar import *
  12. import kid
  13. import cherrypy
  14. import turbogears
  15. import time
  16.  
  17. import os
  18.  
  19. from cherrypy.lib.cptools import serveFile
Código Python:
Ver original
  1. def invitadosPorTipoForo(self,edicion_id):
  2.        
  3.         pagina = 'Departamento de invitados: Consultas'
  4.        
  5.         cabecera = 'Invitados al Foro'
  6.        
  7.         contenido = '<p>Elige que tipo deseas consultar</p>'
  8.        
  9.         widget_opciones = RemoteForm(name="consulta",
  10.                             fields= [SingleSelectField(name = 'tipoforo',
  11.                                     options=listaCombo('TipoForo',valorNulo=False,extra=edicion_id)),
  12.                                     HiddenField('edicion',default=4),
  13.                                     CheckBox('cnf','',u'Sólo confirmados',default=True),
  14.                                     CheckBox('pax','',u'No mostrar PAX = 0',default=True),
  15.                                     CheckBox('pre','',u'Mostrar datos del Dept. de prensa',default=False)],
  16.                                    
  17.                                 submit_text='Consultar',
  18.                                 action='doInvitadosPorTipoForo')
  19.        
  20.        
  21.         return dict(pagina=pagina,contenido=contenido,cabecera=cabecera,
  22.                 widget_opciones=widget_opciones)
  23.                
  24.                
  25.     @expose(template="festibase.templates.widget")
  26.     @paginate('datos_lista',limit=20,default_order='apellidos')
  27.     def doInvitadosPorTipoForo(self,rs=None,**kw):
  28.  
  29.         def borra(item):
  30.             texto = '<a href="doInvitadosPorTipoForo?rs=\'s\';q=%d">' % (item.id)
  31.             texto += ICONO_SEL + '</a>'
  32.             return kid.XML(texto)
  33.  
  34.         # Consulta
  35.         if rs == None or cherrypy.session.get('resultado',[]) == []:
  36.            
  37.             if rs != None:
  38.                 self.redireccionaPorCaducidad()
  39.             #edicion_id = int(kw['edicion'])
  40.             edicion = Edicion.get(int(kw['edicion']))  
  41.             tipoforo = TipoForo.get(int(kw['tipoforo']))
  42.             #resultado = list(InvitadoEdicion.select(InvitadoEdicion.q.tipoForoID == tipoforo.id))
  43.             resultado = list(InvitadoEdicion.select(AND(InvitadoEdicion.q.tipoForoID == tipoforo.id,self.get_fechaLlegada.strftime("%Y") == self.get_anioEd.strftime("%Y"))))
  44.             #¿Mostrar prensa?
  45.             if 'pre' not in kw.keys():
  46.                 resultado = [i for i in resultado if i.invitado.esInvitado]
  47.             #¿lo confirmados?
  48.             if 'cnf' in kw.keys():
  49.                 resultado = [i for i in resultado if i.confirmado]
  50.                
  51.             #¿No Pax=0?
  52.             if 'pax' in kw.keys():
  53.                 resultado = self.quitaPax0(resultado)
  54.            
  55.             resultado = ordenarResultados(resultado,'apellidos')
  56.            
  57.            
  58.         else:
  59.             resultado = cherrypy.session.get('resultado',[])
  60.             tipoforo = cherrypy.session.get('tipoforo')
  61.            
  62.        
  63.         if 'ordenacion' in kw.keys():
  64.             resultado = ordenarResultados(resultado,kw['ordenacion'])
  65.        
  66.         if 'q' in kw.keys():
  67.             resultado = [r for r in resultado if r.id != int(kw['q'])]
  68.        
  69.         cherrypy.session['resultado'] = resultado
  70.         cherrypy.session['tipoforo'] = tipoforo
  71.            
  72.         # Presentacion
  73.            
  74.         pagina = 'Departamento de invitados: Consultas'
  75.        
  76.         cabecera = u'Listados de invitados %s al Foro' % (tipoforo.nombre)
  77.        
  78.         Col = widgets.datagrid.PaginateDataGrid.Column
  79.         fields = [Col('Sel.',borra),Col('apellidos',self.get_apellidosEd),
  80.             Col('nombre',self.get_nombreEd),       
  81.             Col('cargo',self.get_cargoEd),
  82.             Col('entidad',self.get_entidadEd),
  83.             Col('fecha llegada',self.get_fechaLlegada),
  84.             Col('fecha salida',self.get_fechaSalida),
  85.             Col('hotel',self.get_hotel),
  86.             Col('pax',self.get_pax),
  87.             Col(u'Acompañante',self.get_acompanante),
  88.             Col('Tipo Inv.',self.get_tipoInvitado)]
  89.        
  90.        
  91.         consulta_widget = widgets.datagrid.PaginateDataGrid(fields = fields)
  92.        
  93.         contenido = '<table><tr>'
  94.         contenido += self.opcionesGeneralesConsultas('doInvitadosPorTipoForo')
  95.         columnas = [('apellidos',),
  96.                     ('nombre',),
  97.                     ('cargo',),
  98.                     ('entidad',),
  99.                     ('fechaLlegada','llegada'),
  100.                     ('fechaSalida','salida'),
  101.                     ('hotel',),
  102.                     ('pax',),
  103.                     ('acomp','Acomp.'),
  104.                     ('tipoinvitado','Tipo Inv.')]
  105.         for c in columnas:
  106.             contenido += '<td><a href="doInvitadosPorTipoForo?rs=%s;ordenacion=%s;%s">%s %s</a></td>' % ('s',c[0],self.extra_kw(kw),ICONO_ORDENAR,self.nombreColumna(c))
  107.         contenido += '</tr></table>'
  #4 (permalink)  
Antiguo 08/05/2010, 19:55
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ayuda con consulta en python

Creo que primero tenés que solucionar el problema y luego adaptarlo a turbogears.
Además, será mejor si probás un ejemplo más sencillo, que tenga solamente lo que necesitás que haga. En un ejemplo completo siempre puede pasar que el error no esté donde suponés que esté. ¿Estás seguro de que los datos que estás pidiendo son los que realmente querés?

Saludos.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:03.