0
respostas

Erro ao inserir dados de um excel no SQL Server usando Python

Bom, estou com esse código que tenta inserir no meu Banco Dados Local um arquivo excel por meio do Python, porém ele apresenta erro:

import pyodbc
import pandas as pd

#CONEXAO COM O BANCO DE DADOS
conexao_dw = ("Driver={SQL Server};"
                 "Server=ADMND8960551120\SQLEXPRESS;"
                 "Database=Comercial;"
             )
conexao_dw = pyodbc.connect(conexao_dw)
cursor_dw = conexao_dw.cursor()

#LEITURA DA PLANILHA
df = pd.read_excel('25-10.xlsx')
#print(df)

#PERCORRENDO LINHA A LINHA DA TABELA E INSERINDO NO BANCO DE DADOS
#NO BANCO DE DADOS TODOS TEM DE SER VARCHAR
for i, row in enumerate(df.iterrows()):
    requisicao  =  df.loc[i,'Requisicao']
    nomepaciente = df.loc[i,'Nome_do_Paciente']
    sexo = df.loc[i,'Sexo']
    estado = df.loc[i,'Data_de_Nascimento']
    idade = df.loc[i,'Idade']
    divisao = df.loc[i,'Divisao']
    convenio = df.loc[i,'Convenio']
    clientelaudo = df.loc[i,'Cliente_de_Laudo']
    clientelaboratorio = df.loc[i,'Cliente_de_Laboratorio_Apoiador']
    unidaderesp = df.loc[i,'Unidade_Responsavel']
    datareq = df.loc[i,'Data_da_Requisicao']
    horareq = df.loc[i,'Hora_da_Requisicao']
    codamostra = df.loc[i,'Codigo_da_Amostra']
    posicaocontainer = df.loc[i,'Posicao_no_Container']
    nomecontainer = df.loc[i,'Nome_do_Container']
    numcontainer = df.loc[i,'Numero_do_Container']
    cod1 = df.loc[i,'ALTEAMIHRS']
    cod2 = df.loc[i,'ALTENUCHRS']
    cod3 = df.loc[i,'AVAKAHRD']
    cod4 = df.loc[i,'AVAKAHRS']
    cod5 = df.loc[i,'BABICONHRS']
    cod6 = df.loc[i,'CCHRSN']
    cod7 = df.loc[i,'CCHRSR']
    cod8 = df.loc[i,'DESCHRD']
    cod9 = df.loc[i,'FRHRS']
    cod10 = df.loc[i,'GENEHRS']
    cod11 = df.loc[i,'HRS']
    cod12 = df.loc[i,'HRSNEG']
    cod13 = df.loc[i,'HRSNEGC']
    cod14 = df.loc[i,'INTHRS']
    cod15 = df.loc[i,'LSCPHRD']
    cod16 = df.loc[i,'LSCPHRS']
    cod17 = df.loc[i,'MATREHRD']


    dados = '\'' + str(requisicao)+'\''+',\''+str(nomepaciente)+'\''+',\''+str(sexo)+'\''+',\'' + str(estado)+'\'' + ',\'' + str(idade)+ '\'' + ',\'' + str(divisao)+ '\'' + ',\'' + str(convenio)+ '\'' + ',\'' + str(clientelaudo)+ '\'' + ',\'' + str(clientelaboratorio)+ '\'' + ',\'' + str(unidaderesp)+ '\'' +',\'' + str(datareq)+ '\'' + ',\'' + str(horareq)+ '\'' + ',\'' + str(codamostra)+ '\'' + ',\'' + str(posicaocontainer)+ '\'' + ',\'' + str(nomecontainer)+ '\'' + ',\'' + str(numcontainer)+ '\'' + ',\'' + str(cod1)+ '\'' +  ',\'' + str(cod2)+ '\'' + ',\'' + str(cod3)+ '\'' + ',\'' + str(cod4)+ '\'' + ',\'' + str(cod5)+ '\'' + ',\'' + str(cod6)+ '\'' + ',\'' + str(cod7)+ '\'' + ',\'' + str(cod8)+ '\'' + ',\'' + str(cod9)+ '\'' + ',\'' + str(cod10)+ '\'' + ',\'' + str(cod11)+ '\'' + ',\'' + str(cod12)+ '\'' + ',\'' + str(cod13)+ '\'' + ',\'' + str(cod14)+ '\'' + ',\'' + str(cod15)+ '\'' + ',\'' + str(cod16)+ '\'' + ',\'' + str(cod17)+ '\'' + ',\'' + str(cod18)+ '\'' +')'
    script = '''insert into tbl_Astrazeneca8 ([Requisicao],[Nome_do_Paciente],[Sexo],[Data_de_Nascimento],[Idade] ,[Divisao],[Convenio],[Cliente_de_Laudo],[Cliente_de_Laboratorio_Apoiador],[Unidade_Responsavel],[Data_da_Requisicao],[Hora_da_Requisicao],[Codigo_da_Amostra],[Posicao_no_Container],[Nome_do_Container],[Numero_do_Container],[ALTEAMIHRS],[ALTENUCHRS],[AVAKAHRD],[AVAKAHRS],[BABICONHRS],[CCHRSN],[CCHRSR],[DESCHRD],[FRHRS],[GENEHRS],[HRS],[HRSNEG],[HRSNEGC],[INTHRS],[LSCPHRD],[LSCPHRS] ,[MATREHRD],[MATREHRS],[METHRS],[METOHRD],[MYCH],[PARQAHRS],[PARQUAHRD],[PATAPRHIG]) values ('''
    query = script + dados
    print(query)

    cursor_dw.execute(query)
    cursor_dw.commit()

Gostaria de obter ajuda sobre outras formas de insert no SQL SERVER através do python, já busquei em várias fontes e não chego em resultado algum. Além do mais, o trabalho de escrita foi bem grande por conta da quantidade de colunas no meu arquivo. Podem me ajudar?