diccionario de datos Python Exportación a Excel SqlServerl

Define tres métodos

1. Definir un método de adquisición de datos getData ()
2. Definir una tabla de Excel exportación método exportSqlServer ()
Definir una typeof tipo de adquisición () método se utiliza como una consulta de datos fuera identificado

A continuación se muestra el código directamente

fecha y hora de fecha y hora de importación de 
importación OS 
Importación pymssql AS pymssql 
importación xlwt 


DEF la getData (): 
    Conectar = pymssql.connect (Host, 'SA', contraseñas, nombre de base de datos); 
    CUR = connect.cursor (); 
    query = '' ' 
 SELECT 
     nombreTabla = d.name, # fusioné celular se combina en una mesa de repetir aquí, si la estructura final cuando, no se puede combinar con el caso, estar mal 
     tableIntroduce = ISNULL (F.value, ''), 
     Ordenar = A.colorder , 
     la fieldName = a.name, 
     catogary = b.name, 
     bytes = a.length, 
     longitudes = la COLUMNPROPERTY (A.id, a.name, 'el PRECISION'), 
     Scales = isnull (la COLUMNPROPERTY (A.id, a.name, 'Escala'), 0),
     isOrNotNull = caso cuando A.isnullable = 1 Entonces '√'Else '' End, 
     syscomments E
		   primarays = caso cuando existe (SELECCIONAR 1 DE sysobjects Dónde xtype = 'PK' y parent_obj = A.id y el nombre de ( 
                      nombre SELECT FROM sysindexes DONDE indid en (SELECT indid DE sysindexkeys donde id = A.id Y colid = A.colid ))) luego '√' más '' final, 
     defauts = isnull (E.Text, ''), 
		  anotaciones = isnull (G. [valor], '') 
 DE 
     syscolumns Una 
 combinación izquierda 
     systypes B 
 En 
     A.xusertype = B .xusertype 
 combinación interna 
     sysobjects D 
 en 
     a.id = D.id y D.xtype = 'U' y D.name <> 'dtproperties' 
 combinación izquierda 
 en 
     A.cdefault = E.id 
 combinación izquierda 
 sys.extended_properties G
 EN 
     A.id = G.major_id y A.colid G.minor_id = 
 Izquierda la unión 

 sys.extended_properties F. 
 On 
     D.id F.minor_id = 0 y = F.major_id 
     --donde d.name = 'Información de Pedido' - aunque sólo consulta la tabla especificada, añadir esta condición 
 la Orden Por 
     A.id, A.colorder '' ' 


    cur.execute (consulta) 
    de datos = cur.fetchall () # tuplas 
    retorno de datos 

DEF exportExcel (nombre): 
    datos = el getData () 
    MyExcel = xlwt.Workbook ( 'encoding = utf -8') 
    de ancho tabla de definición # 
    Sheet1 = myExcel.add_sheet (nombre, cell_overwrite_ok = True) 
    sheet1.col (0) = 300 * 20 es .width 
    sheet1.col (. 1). = 400 * 20 es ancho  
    sheet1.col (2) = 100 * 20 es .width
    sheet1.col (. 3) * 300 = 20 es .width 
    sheet1.col (. 4) = 256 * 20 es .width 
    sheet1.col (. 5) = 180 [* .width 20 es 
    sheet1.col (. 6) 20 es .width * = 180 [ 
    Sheet1. COL (. 7) * 100 = 20 es .width 
    sheet1.col (. 8) * 100 = 20 es .width 
    sheet1.col (. 9) * 100 = 20 es .width 
    sheet1.col (10) = 180 [* .width 20 es 
    sheet1.col ( . 11) * 800 = 20 es .width 

    # centralmente dispuesta 
    A1 = xlwt.Alignment () 
    a1.horz = 0x02 
    a1.vert = 0x01 
    style = xlwt.XFStyle () # estilo se asigna al patrón de inicialización XFStyle 
    style.alignment = A1 

    Hoy = datetime.today () # obtener la fecha actual, obtenida como una fecha y hora objetos: (2019 ,. 7, 2, 23 es decir, 12 es decir, 23 es, 424000) 
    today_date = datetime.date (hoy) # los objetos de fecha y hora fecha de adquisición toman sólo como : 02/07/2019 
    items = [ 'tabla de datos', 'tabla', 'campo ID', 'campo', 'tipo', 'número de bytes ocupados '' longitud '' punto decimal '' está vacía ''Si la clave principal '' por defecto '' Nota ']
    COL en el rango de (LEN (artículos)): 
        sheet1.write (0, COL, artículos [COL]) 
    # nombre combinado en la segunda columna, la primera columna de los datos adquiridos a partir del contenido, [( "Choleen", "XXX") , ()] 
    first_col = [] 
    for i in range (len (datos)): 
        first_col.append (datos [I] [0]) 
    Imprimir ( "first_col:", first_col) 
    los datos de columna duplicados # elimina, y el orden no es variables 
    Lista nFirst_col = (SET (first_col)) 
    nFirst_col.sort (clave = first_col.index) 
    Imprimir ( "nFirst_col:", nFirst_col) 
    Fila = 1. 
    # datos adquiridos [i] del segundo elemento, el ciclo de escritura 
    para la fila en el rango (lEN (datos)): 
    para I en nFirst_col: 
        COUNT = first_col.count (i) # Número de cálculo elemento repetido 
        MergeRow = fila + count - el número de enlace ascendente combinada # 1,
        sheet1.write_merge (fila, MergeRow, 0, 0, i, estilo) # primera columna 
        sheet1.write_merge (fila, MergeRow ,. 1 ,. 1, I, estilo) 
        Fila MergeRow = # +. 1 se escribe comenzando a partir de una línea siguiente

        para col en el rango de (1, Len (datos [fila])): 
            resultado = datos [fila] [col] 
            str = typeof (resultado) #获取类型
            si str == Ninguno: #不能识别的类型,需要转换
                resultado = result.decode ( 'utf-8') 
            sheet1.write (fila + 1, col, resultado, estilo) 

    filename = nombre + '.xls' 
    RootPath = os.path.dirname (os.path.abspath (' ExportSqlServer.py ')) + '\\' 
    impresión (ROOTPATH) 
    flag = os.path.exists (ROOTPATH + nombre del archivo) 
    si la bandera: 
        os.remove (ROOTPATH + nombre del archivo) 
        myExcel.save (nombre del archivo) 
    más: 
        myExcel.save (nombre del archivo) 


def typeof (variate): 
    type = Ninguno 
    si isinstance (variate, int): 
        tipo = "int" 

    elif isinstance (variate, str): 
        type = "str" 
    elif isinstance (variate, float): 
        type = "flotar" 
    elif isinstance (variate, lista): 
        type = "lista" 
    elif isinstance (variate, tupla): 
        type = "tupla" 
    elif isinstance (variate, dict): 
        type = "dict" 
    elif isinstance (variate, set): 
        type = "conjunto" 
    tipo de retorno 

, si __name__ == '__main__': 
    print ("Esta es SQLserver exportó diccionario de datos "); 
    # = respuesta chardet.detect (b '\ XE7 \ x94 \ xa8 \ XE6 \ x88 \ xb7 \ XE8 \ xa1 \ xa8') 
    # De impresión (respuesta) 
    exportExcel ( "usuario表")
Apareció, chino ilegible en el proceso de escribir código. python3 no convertirá automáticamente Unicode, nos fijamos en el proceso de conversión:
     UTF-8 / GBK - "decodificar la decodificación -" el Unicode 
  el Unicode - "codificar codificación -" GBK / UTF-8

 El código aquí es Unicode, para ser convertido a texto sin formato, es necesario método de decodificación de formato Unicode sólo puede ser, si int, str tipos de errores se 

Plaintext - encode - "Unicode -" gbk , UTF-8 
expresamente "- decode - Unicode" - gbk , UTF-8

así, por lo que puede, para completar la operación.

Supongo que te gusta

Origin www.cnblogs.com/Choleen/p/12514645.html
Recomendado
Clasificación