Generar planos

Manuel Enrique González Ramírez maengora en gmail.com
Mie Feb 20 03:54:48 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.

Aquí el código de prueba sobre el que vengo trabajando (pero que aún no me
funciona):

# -*- coding: iso-8859-1 -*-
# Don't modify comment

import wx
#[inc]add your include files here
import MySQLdb as con
db = con.connect(host='localhost', user='root', passwd='****', db='prueba')
c = db.cursor()
#[inc]end your include

class MyFrame(wx.Frame):
    def __init__(self,parent,id = -1,title='',pos = wx.Point(1,1),size =
wx.Size(445,240),style = wx.DEFAULT_FRAME_STYLE,name = 'frame'):
        pre=wx.PreFrame()
        self.OnPreCreate()
        pre.Create(parent,id,title,pos,size,style,name)
        self.PostCreate(pre)
        self.initBefore()
        self.VwXinit()
        self.initAfter()

    def __del__(self):
        self.Ddel()
        return


    def VwXinit(self):
        self.SetTitle('Generación de archivos planos')
        self.Show(False)
        self.SetFont(wx.Font(12,74,90,90,0,"Tahoma"))
        self.SetBackgroundColour(wx.SystemSettings.GetColour(
wx.SYS_COLOUR_WINDOW))
        self.bt_planos = wx.Button(self,-1,"",wx.Point(130,115),wx.Size
(165,55))
        self.bt_planos.SetLabel("GENERAR PLANOS")
        self.bt_planos.SetFont(wx.Font(12,74,90,90,0,"Tahoma"))
        self.Bind(wx.EVT_BUTTON,self.generar_da,self.bt_planos)
        self.st4c = wx.StaticText(self,-1,"",wx.Point(60,10),wx.Size
(332,89),wx.ST_NO_AUTORESIZE)
        self.st4c.SetLabel("Ejemplo de generación de archivos planos que
quedan\r\nalmacenados en el disco duro con el formato\r\nestablecido.")
        self.Refresh()
        return
    def VwXDelComp(self):
        return

#[win]add your code here

    def generar_da(self,event): #init function
        #[62d]Code event VwX...Don't modify[62d]#
        #add your code here
        sql = c.execute('SELECT %-25s, %-25s FROM
ejm'%('nombre','apellido'))
        res = c.fetchall()

        if res<>None:
            f = open('c:/guardar.dat','a')
            for i in res:

                f.write(str(i[0]))
                f.write(str(i[1]+'\n'))

            f.close()
            w = wx.MessageDialog(self,u"Archivo generado con éxito","GENERAR
PLANOS",wx.OK | wx.ICON_INFORMATION)
            w.ShowModal()
            w.Destroy()
        return #end function


    def OnPreCreate(self):
        #add your code here

        return

    def initBefore(self):
        #add your code here

        return

    def initAfter(self):
        #add your code here
        self.Centre()
        self.Show()
        return

    def Ddel(self): #init function
        #[ f9]Code VwX...Don't modify[ f9]#
        #add your code here

        return #end function

#[win]end your code


Gracias amigos por toda la colaboración que me puedan brindar.
_______________________________________________
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