select de una tabla

Chema Cortes py en ls-l.org
Mar Mar 22 09:25:45 CET 2005


Esteban escribió:
> hola a todos
> como o donde podré obtener información de como saber que registro
> de una tabla estoy
> ejemplo en otros lenguajes con recno() me daría el numero de registro

El recno() se usa mucho en xBase, pero en otros lenguajes no tiene mucho 
sentido. En un SGDB potente, todo objeto se identifica con un 'rowid' 
que sería algo similar. No es exáctamente el ordinal que ocupa el 
registro en una tabla. El 'rowid' suele estar compuesto por varios 
identificadores dependiente de tu SGDB, pero que te identifica 
unívocamente un registro (fila) de tu tabla.

Para obtener el rowid deberás mirar la documentación de tu SBDB. La 
manera habitual es ponerlo explícitamente en el query:

   select rowid,prueba.* from prueba;

La interface DB-API de python define el rowid como la propiedad 
'.lastrowid' del cursor.

> lo que en definitiva necesito es recorrer el resultado de una consulta
> Ej.
> select * from prueba where cliente=1
> hago el query y con getresult()
> recorro los datos
> ejemplo
> resultado=db.query(select * from prueba where cliente=1).getresult()
> for x in resultado
>     print x[0]
> 
> esto imprime el campo 0 pero como se que recno() o registro es
> ejemplo 1 o el 10 ect
> como tampoco se como hacer un recordcount()
> hay alguna función que me de el total de registros traídos por el select

Ummm, esto no parece la DB-API. Aunque no pones qué interface utilizas, 
creo que las respuestas las tenías más cerca de lo que piensas:

Para saber el número de registros (recordcount) bastaría con obtener la 
longitud de la lista ó secuencia que llamas 'resultado' (o sea, 
len(resultado)), y para el recno() se puede utilizar la función 'enumerate':

for recno,x in enumerate(resultado):
     print "04d% -> %s"%(recno,x[0])




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