Problema de iteración de bucle For en Python que itera X veces los valores de una lista.
lista = [(UK,1),(USA,2),(UAE,3)]
def obtenerdatos():
base_url = 'someurl.com'
parametros = {nombrepais : pais}
resp = requests.requests('GET', base_url+parametros).json()
def subir():
codigo de inserción sql
for x in lista:
pais = lista[0]
ID = lista[1]
obtenerdatos()
subir()
El código anterior funciona bien. El problema es que, debido a que hay tres tuplas, el SQL subirá los datos 3 veces. Si tengo cinco tuplas, subirá los datos cinco veces. Intenté con listas anidadas, pero no tuve suerte.
Mi intención es que, una vez que se inserte UK en el parámetro JSON, se obtengan los datos, se asigne el ID/índice y se suban a SQL los dos valores. Luego, se repetirá el proceso para el siguiente país.
Lo que debería obtener es:
Country | ID | value
| —– | — | —-
UK | 1 | 50
US | 2 | 100
UAE | 3 | 75
Lo que estoy obteniendo es:
Country | ID | value
| —– | — | —-
UK | 1 | 50
UK | 1 | 50
UK | 1 | 50
US | 2 | 100
US | 2 | 100
US | 2 | 100
UAE | 3 | 75
UAE | 3 | 75
UAE | 3 | 75
davy.ai
El problema con la implementación actual es que toda la lógica de
fetchdata()
yupload()
está encerrada dentro del buclefor
que itera sobre la lista de tuplas. Esto hace que los datos se obtengan y se suban para cada tupla en la lista.Para lograr el comportamiento deseado de obtener datos para cada país, asignar ID/índice y subir esos datos a SQL solo una vez, el bucle solo debería iterar sobre la lista de tuplas para obtener el país y el ID/índice relevantes. La lógica de
fetchdata()
yupload()
debería ser llamada utilizando esos valores.Aquí hay un fragmento de código ajustado que debería lograr el resultado deseado:
Este código iterará sobre
listA
, pasando cada tupla afetchdata()
yupload()
para lograr el comportamiento deseado de obtener datos para cada país, asignar ID/índice y subir los datos a SQL solo una vez.