Boa Noite,
Eu criei uma tabela com alguns dados tanto no formato csv quanto no formato json e estou tentando importar para o Flask para poder usar lá. Existe alguma função ou método pratico para fazer isso ?
Muito Obrigado
Boa Noite,
Eu criei uma tabela com alguns dados tanto no formato csv quanto no formato json e estou tentando importar para o Flask para poder usar lá. Existe alguma função ou método pratico para fazer isso ?
Muito Obrigado
Oiii André, como você está? Espero que esteja bem ^-^
Sinto muito pela demora em obter um retorno. Vamos lá:
Há várias maneiras de fazer a leitura de um arquivo tanto csv quanto json, um método prático seria através da biblioteca pandas
.
CSV
Suponha o seguinte arquivo csv
que contém dados sobre jogos:
Nome,Categoria,Console
Super Mario,Ação,SNES
Pokemon Gold,RPG,GBA
A biblioteca pandas
disponibiliza a função read_csv
para que possamos trabalhar com esse tipo de arquivo. Em código ficará da seguinte maneira:
import pandas as pd
arquivo_csv = pd.read_csv('jogos.csv')
print(arquivo_csv)
Como saída será apresentado:
Nome Categoria Console
0 Super Mario Ação SNES
1 Pokemon Gold RPG GBA
E para pegar os dados de uma coluna específica, basta acessarmos a chave correspondente, onde essa chave será o nome da coluna: arquivo_csv['Nome']
. Tudo bem?!
Uma propriedade importante é a values
, através dela será retornada uma lista de valores, seja da coluna ou do arquivo csv inteiro.
Veja um exemplo em um cenário onde capturamos apenas os valores da coluna Nome
for nome_jogo in arquivo_csv['Nome'].values:
print(nome_jogo)
JSON
Supondo o seguinte arquivo json:
{
"Nomes": [
"Super Mario",
"Pokemon Gold"
],
"Categoria": [
"Ação",
"SNES"
],
"Console": [
"RPG",
"GBA"
]
}
A leitura não será muito diferente da que fizemos para o csv
, mas utilizaremos a função read_json
, veja como fica em código:
import pandas as pd
arquivo_csv = pd.read_json('jogos.json', encoding='utf-8')
for nome_jogo in arquivo_csv['Nomes'].values:
print(nome_jogo)
Após a leitura tanto dos arquivos csv quanto json, para passá-los ao Flask teremos que instanciar a classe Jogo
com os dados do arquivo lido. E faremos isso utilizando a propriedade values
para todo o arquivo csv:
import pandas as pd
class Jogo:
def __init__(self, nome, categoria, console):
self.nome = nome
self.categoria = categoria
self.console = console
arquivo_csv = pd.read_csv('jogos.csv', encoding='utf-8', dtype=str)
lista_de_jogos = []
for item in arquivo_csv.values:
nome, categoria, console = item # a variável item irá retornar uma lista com os valores de nome, categoria e console, nessa linha estamos tirando cada valor dessa lista e colocando em uma variável
jogo = Jogo(nome, categoria, console) # instanciamos a classe Jogo com os valores lidos
lista_de_jogos.append(jogo) # guardamos o objeto instanciado na lista
Agora que já temos os dados em nossa lista_de_jogos
podemos passá-los para a função render
do template:
return render_template('lista.html', titulo='Jogos', jogos=lista_de_jogos)
Qualquer dúvida estou por aqui, tá bom?
Abraços e bons estudos!