Fecha Inicial : 20/04/2018
Fecha Final :  20/04/2019
Hora Inicio: 12:50 PM
Hora Final:  3:31 PM
Horas invertidas(Minutos): 221
Colaboradores: Oscar Cortés

Actividad:
Terminar el código creador de CRUD para script  

Terminado Create con inserción a medias dentro de la tabla de eventos

Código:

 


def createHardcoreCRUDE(script):
    """Crea cuatro funciones por cada tabla, además
    de agregar a la tabla 'eventos' los cambios de cada tabla."""
    print("Hello world")
   
    tempo = ""
    jump = False
    for i in range(len(script)-1):
        if (script[i] != "\t"):
            tempo += script[i]

   
    tablas = []
    tabla = None
   
    for t in tempo.split("\n"):
        if len(t) == 0:
            continue
       
        if (t[-1] == "("):
            tabla = Tabla(t.split(" ")[2][:-1])
            tablas.append(tabla)
           
        elif (t[0] != ")" and tabla != None):
            tt = t.split(" ")
            tabla.agregarDato(tt[0], tt[1])

    tablas[0].toCRUD()



class Tabla:
    nombre = ""
    columnas = []
    tipos = []
    parametros = []

    def __init__(self, pNombre):
        self.nombre = pNombre
        self.columnas = []
        self.tipos = []
        self.parametros = []

    def agregarDato(self, pNombre, pTipo):
        self.columnas.append(pNombre)
        intial = pNombre[0].upper()
        self.parametros.append("@p" + intial + pNombre[1:])
        self.tipos.append(pTipo)

    def toString(self):
        print(self.nombre)
        print(self.columnas)
        print(self.tipos)
        print(self.parametros)


    def toCRUD(self):
        #Create
        print("Create Procedure SPCREATE_"+self.nombre)
        for i in range(len(self.parametros) - 1):
            if (i == len(self.parametros) - 2):
                print("\t"+self.parametros[i] + " " + self.tipos[i])
            else:
                print("\t"+self.parametros[i] + " " + self.tipos[i] + ", ")

        print("""as
begin
    begin tran

    declare @XmlAntes XML
    select * from """ self.nombre + """ for XML auto, type

    declare @id int
        select max(ID) + 1""")
        print("\t\tfrom " + self.nombre + "\n")

        insertTable = "\tinsert into " + self.nombre + "("

        for i in range(len(self.parametros) - 1):
            insertTable += self.columnas[i] + ", "
        insertTable = insertTable[:-2] + ")"

        print(insertTable)
        values = "\t\tvalues (@id, "
       
        for i in range(1, len(self.parametros) - 1):
            values += self.parametros[i] + ", "

        values = values[:-2] + ")"
        print(values)

        print("declare @XmlDespues XML"
        print("select * from """ self.nombre + """ for XML auto, type")

        exec

        print("\tcommit tran")
        print("end\ngo\n\n")


        #Delete


       
       

        #Update

        #Read
       

Problemas:
Leer XML's creados por MS SQL (Solucionado)

select * from Tabla for xml auto, type


Bibliografía:

https://stackoverflow.com/questions/1564541/how-to-convert-records-in-a-table-to-xml-format-using-t-sql

https://docs.microsoft.com/en-us/sql/relational-databases/xml/use-auto-mode-with-for-xml?view=sql-server-2017

https://docs.microsoft.com/en-us/sql/relational-databases/xml/use-auto-mode-with-for-xml?view=sql-server-2017

https://stackoverflow.com/questions/13397885/bulk-load-xml-referring-to-auto-increment-parent-id

https://docs.microsoft.com/en-us/sql/relational-databases/xml/xml-data-type-and-columns-sql-server?view=sql-server-2017

https://stackoverflow.com/questions/1564541/how-to-convert-records-in-a-table-to-xml-format-using-t-sql

https://support.office.com/en-us/article/create-an-xml-data-file-and-xml-schema-file-from-worksheet-data-e35400d4-0e10-4669-9a50-59a8c57d677e

https://searchsqlserver.techtarget.com/tip/T-SQL-commands-vs-XML-AUTO-in-SQL-Server

Comentarios