Re: Solución a filtrar base de datos con una variable

vicente villaveces jvicentevilla en yahoo.es
Jue Jul 19 16:56:51 CEST 2007



Chema Cortes <pych3m4 en gmail.com> escribió: El 19/07/07, Javier Castrillo  escribió:
> On 18/07/07, vicente villaveces  wrote:
> >
> > #for r in db.query("""SELECT * FROM estudiantes where cedu = "cedula" """).dictresult():
>
> Me parece que es así:
>
> for r in db.query("""SELECT * FROM estudiantes where cedu = %s """ ,
> (cedula)).dictresult():

Sería así, o casi, si el módulo usado siguiera la DB-API2. ...y digo
lo de casi porque los parámetros tienen que pasarse como tupla (sería
(cedula,) )

Con el módulo pg de pygresql no queda más remedio que construir la
query SQL completa:

sql="SELECT cedu,nomb,edad FROM estudiantes where cedu = '%s'" % cedula
for r in db.query(sql).dictresult():
  ...


> Saludos, Gracias a los Sres.  Chema Cortes, Juan Jose Rojo,  Javier Castillo y a toda la comundad de la lista.

    He podido resolver el problema con las sugerencias hechas por el Sr. Chema Cortes, anexo el codigo  final completo, para que sirva de ayuda a otros que esten en el camino.

#!/usr/bin/env python


#######################################################
# runs on the server, reads form input, prints html
#######################################################
     
import cgi, sys, pg
import  cgitb; cgitb.enable () 

form = cgi.FieldStorage()

if not (form.has_key("cedula")):
    print "<H1>Error</H1>"
    print "Por favor ingrese su cedula."
    



db = pg.connect('datos', 'localhost', 5432, user= 'postgres', passwd= 'jose123456')




print "content-type: text/html"      # plus blank line

##########
html = """
<TITLE>solbecas</TITLE>
<H1>SALUDOS</H1>
<H1>Esta página ha sido realizada  con la metodologia Server-side Scripting, en el lenguaje de programación Python, en respuesta a un formulario enviado desde otra página realizada con Html</H1>
<HR>          </HR>

<p>%s</p>
HR>"""


 
if not form.has_key('cedula'):
    print html % ("Ingrese su número de cedula por favor")
    
else:
        print html % ("Su número de cédula, %s." % form['cedula'].value)
        
print """<P>
        

        <P>
        <CENTER>
        <TABLE BORDER=3>
        <CAPTION>BASE DATOS ESTUDIANTES</CAPTION>
        <TR>
        <TH>CEDULA</TH>
        <TH>NOMBRE</TH>
        <TH>EDAD</TH>"""



cedula = form.getvalue("cedula")


print cedula
print "<br>"


sql="SELECT cedu,nomb,edad FROM estudiantes where cedu = '%s'" % cedula
for r in db.query(sql).dictresult():

     print '''<tr>
   <td>%(cedu)s</td>
   <td>%(nomb)s</td>
   <td>%(edad)s</td>
</tr>''' % r


print "</table></center></p></body></html>"


     
print 'fin del script '



                                                                         Gracias.

                                                                  Jose Vicente Villaveces.

"Que viva el software libre y los hombres que lo liberan"

_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


       
---------------------------------

Sé un Mejor Amante del Cine
¿Quieres saber cómo? ¡Deja que otras personas te ayuden!.




Más información sobre la lista de distribución Python-es