Jump to content

Como resolver erro de conexão da API com o Banco de Dados?


MaduVilasBoas

Postagens Recomendadas

Pessoal, tudo bom?

Eu sou iniciante ainda no Python e gostaria de resolver o erro "TypeError: string indices must be integers, not 'str'". Entretanto, com a minha estrutura já elaborada, não faço a mínima ideia de como resolver.

"Significa que você está tentando usar uma string como um índice em uma estrutura de dados que requer índices inteiros. Em Python, quando você indexa uma lista, dicionário ou outra estrutura de dados indexada, você deve usar um número inteiro como índice."

MEU ERRO: TypeError: string indices must be integers, not 'str'

MEU CÓDIGO PESSOAL (como são dados sensíveis algumas variáveis foram trocadas):
 

import requests
import mysql.connector
import json

# Definir parâmetros da requisição, como headers, query parameters, etc.
headers = {
    "accept": "application/json",
    "cobli-api-key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

# Fazer a requisição GET para a API com os parâmetros definidos
response = requests.get('https://api.cobli.co/public/v1/drivers/729bd5eb-8803-4b7f-a427-23819d1de300/score', headers=headers)

# Verificar se a requisição foi bem sucedida (código de status 200)
if response.status_code == 200:
    try:
        dados = response.json()  # Converter a resposta para JSON
    except json.JSONDecodeError as e:
        print("Erro ao decodificar JSON:", e)
        dados = None
else:
    print("Erro ao fazer requisição:", response.status_code)
    dados = None

if dados:
    # Conectar ao banco de dados
    conexao = mysql.connector.connect(
        host="teste",
        user="teste",
        password="teste",
        database="teste",
        port=teste
    )

    # Criar um cursor para executar consultas SQL
    cursor = conexao.cursor()

    # Iterar sobre os dados e inserir registros na tabela
    for registro in dados['data']:  # Assuming the actual data is nested under 'data' key
        try:
            sql = "INSERT INTO tombi (log, new) VALUES (%s, %s)"
            valores = (registro['score'], registro['distance_driven'])
            cursor.execute(sql, valores)
        except KeyError as e:
            print("Erro ao acessar campo:", e)
            continue  # Skip this iteration and proceed to the next one

    # Confirmar a inserção
    conexao.commit()

    # Fechar o cursor e a conexão
    cursor.close()
    conexao.close()
else:
    print("Não foi possível obter dados da API.")

 

  • Curtir 1
Link to comment
Compartilhe em outros sites

import requests
import mysql.connector
import json

# Definir parâmetros da requisição
headers = {
    "accept": "application/json",
    "cobli-api-key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

# Fazer a requisição GET para a API
response = requests.get('https://api.cobli.co/public/v1/drivers/729bd5eb-8803-4b7f-a427-23819d1de300/score', headers=headers)

# Verificar se a requisição foi bem sucedida (código de status 200)
if response.status_code == 200:
    try:
        # Converter a resposta para JSON
        dados = response.json()
    except json.JSONDecodeError as e:
        print("Erro ao decodificar JSON:", e)
        dados = None
    else:
        # Verificar se a chave 'data' existe no dicionário
        if 'data' in dados:
            # Conectar ao banco de dados
            conexao = mysql.connector.connect(
                host="teste",
                user="teste",
                password="teste",
                database="teste",
                port=teste
            )

            # Criar um cursor para executar consultas SQL
            cursor = conexao.cursor()

            # Interar sobre os dados e inserir registros na tabela
            for registro in dados['data']:
                try:
                    # Verificar se a chave 'score' existe no dicionário 'registro'
                    if 'score' in registro:
                        # Converter a string 'score' para um número inteiro
                        score_int = int(registro['score'])

                        # Verificar se a chave 'distance_driven' existe no dicionário 'registro'
                        if 'distance_driven' in registro:
                            # Executar a query SQL
                            sql = "INSERT INTO tombi (log, new) VALUES (%s, %s)"
                            valores = (score_int, registro['distance_driven'])
                            cursor.execute(sql, valores)
                        else:
                            print("Erro: chave 'distance_driven' não encontrada")
                    else:
                        print("Erro: chave 'score' não encontrada")
                except KeyError as e:
                    print("Erro ao acessar campo:", e)
                    continue

            # Confirmar as inserções
            conexao.commit()

            # Fechar o cursor e a conexão
            cursor.close()
            conexao.close()
        else:
            print("Erro: chave 'data' não encontrada")
else:
    print("Erro ao fazer requisição:", response.status_code)

 

  • Ajudou! 1
Link to comment
Compartilhe em outros sites

  • Casa do Desenvolvedor mudou o título para Como resolver erro de conexão da API com o Banco de Dados?

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora
×
×
  • Create New...