1
resposta

Inserção de lista de dados

Boa tarde.

Na aula 6 houve a inserção da lista de animais em um arquivo .py e consequentemente foram criadas linhas de código que puderam analisar a lista de dados e trazer as respostas de forma eficientes na queries. ok

Mas ao invés de inserir uma lista .py, eu poderia inserir uma lista com extensão CSV ? E seguir esta mesma linha de raciocínio? Ou o arquivo CSV poderia gerar algum conflito de leitura para as queries do código e precisaria convertê-lo em outro formato ?

Obrigado.

1 resposta

Olá Ederson, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

Não tem problema em utilizar um arquivo .csv, a lógica continua a mesma, porém, o que diferencia é que teremos que realizar a leitura deste arquivo e transformá-lo em um dicionário para se adaptar ao código fornecido no curso.

Então, suponha que temos um arquivo csv com informações sobre nome, trabalho e idade de algumas pessoas, que possui as seguintes informações:

Nome,Trabalho,Idade
Lucas,Veterinário,27
Nicky,Programador,38
Mel,Vendedora,46

Para a leitura deste arquivo, podemos utilizar a biblioteca csv que irá conter funções como o DictReader para transformar os dados lidos em um dicionário, onde o cabeçalho - primeira linha do arquivo .csv será mapeada como chave do dicionário que será criado:

import csv

nome_arquivo = 'pessoas.csv'

with open(nome_arquivo, encoding='utf-8') as f:
    leitura = csv.DictReader(f)

    for linha in leitura:
        print(linha)

Resultado:

{'Nome': 'Lucas', 'Trabalho': 'Veterinário', 'Idade': '27'}
{'Nome': 'Nicky', 'Trabalho': 'Programador', 'Idade': '38'}
{'Nome': 'Mel', 'Trabalho': 'Vendedora', 'Idade': '46'}

No caso do código do curso, a lógica não se altera, só precisaremos de adicionar o código responsável pela leitura do arquivo .csv que foi apresentado acima. Deixo abaixo o código completo e caso queira testar com o mesmo arquivo .csv utilizado por mim, você pode efetuar o download dele clicando neste link:

Código Completo:

import csv
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "setup.settings")
import django
django.setup()
from animais.models import Animal


nome_do_arquivo = 'animais.csv'
lista_animais = []

with open(nome_do_arquivo, encoding='utf-8') as f:
    leitura = csv.DictReader(f)

    for linha in leitura:
        lista_animais.append(linha)

def gerando_animais():
    for animal in lista_animais:
        nome = animal['nome_animal']
        predador = animal['predador']
        venenoso = animal['venenoso']
        domestico = animal['domestico']
        animal = Animal(nome_animal=nome, predador=predador, venenoso=venenoso, domestico=domestico)
        animal.save()

gerando_animais()
print('animais gerados')

Para saber um pouco mais sobre a biblioteca csv, recomendo a leitura do seguinte artigo que irá abordar com mais detalhes sobre esta biblioteca:

O artigo está em inglês caso tenha dificuldades com o idioma, recomendo o uso do tradutor que existe no navegador.

Lembre-se que pode contar sempre com o fórum Alura, seja para postar o seu desenvolvimento ou para tirar suas dúvidas.

Fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!