Generar planos

Sebastian Andre Lara Menares slara en udec.cl
Mie Feb 20 05:48:32 CET 2008


> Buenas:
>
> Recuerdo que inicie este hilo buscando la solución a la generación de
> archivos planos separados
> por espacio.
>
> Quiero volver a retormar este hilo porque aún no he hallado la solución y
> esperando que alguien me
> pueda colaborar con esto vuelvo y explico lo que busco:
>
> tengo una base de datos denominada prueba que contiene una tabla llamada
> ejm
> que esta compuesta
> por tres registros (apellido1,apellido2 y nombres).
>
> Lo que necesito es generar una consulta que me liste todos los registros y
> que a su vez los
> almacene en la unidad pero... (aquí es donde viene el rollo) al momento de
> ser almacenados
> éstos registro deben estar separados por espacios, por ejemplo el primer
> espacio que es para el
> campo APELLIDO1 no debe exceder de 12 caracteres, es decir, que por más
> largo que se el apellido1
> éste solo ubicara hasta un máximo de 12 caracteres; a partir de la
> "columna"
> 13 se ubicaría el
> apellido2 y éste ocuparía hasta la columna 25 y a partir de la 26 va el
> nombre.
>
> El formato sería más o menos así
> -------------------------------------------------
> Nombre Campo | Longitud | Posición | Tipo
> -------------------------------------------------
> APELLIDO1      | 12         | 01 a 12  | Alfanumerico
> APELLIDO2      | 12         | 13 a 25  | Alfanumerico
> NOMBRES        | 12         | 26 a 50  | Alfanumerico
>
>
> Un amigo de la lista me envio esta solución
>
>>>> "%-20s %-10s %-5s" % ("hola", "don", "tu")
> 'hola                don       tu   '
>
> Y de verdad que funciona bastante bien en modo consola, pero como lo
> pueden
> notar
> no he sido capaz de ajustarla a lo que necesito que es con base de datos.
> [...]
Hola,

Para este tipo de cosas yo uso un ORM como SQLObject o SQLAlchemy.
Por ejemplo, con SQLObject solo tendrías que hacer algo como:

class Ejems(SQLObject):
    apellido1 = UnicodeCol()
    apellido2 = UnicodeCol()
    nombres = UnicodeCol()

ejems = Ejems.select()
for ejem in ejems:
    print "%-20s %-10s %-5s" % (ejem.apellido1, ejem.apellido2, ejem.nombres)

Faltan detalles como el de la conección a la DB pero creo que se entiende
la idea. Saludos.







_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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