Arquivo csv ou Banco de Dados (Desktop - Raspberry)

229 views
Skip to first unread message

SUNNYTEC - Ramon

unread,
Apr 7, 2016, 3:59:24 PM4/7/16
to Python Brasil
Prezados

Boa Tarde

Estou fazendo um aplicativo onde o operador fará cadastro de produtos (poucos itens) e o sistema armazenará alguns dados para gerar relatórios.

Pergunto:

É melhor armazenar os dados em um arquivo tipo csv ou utilizar um banco de dados? 
Se a melhor opção for banco de dados, qual seria a ferramenta mais simples de utilizar?

Considerações:

- Aplicativo vai rodar em Linux (Raspberry)
- Aplicação bem simples (balança de caminhões) 

Obrigado.


Pedro Werneck

unread,
Apr 7, 2016, 4:07:23 PM4/7/16
to python...@googlegroups.com
Use sqlite. Com CSV você terá de reescrever todo o arquivo a cada alteração.
> --
> --
> ------------------------------------
> Grupo Python-Brasil
> http://www.python.org.br/wiki/AntesDePerguntar
>
> <*> Para visitar o site do grupo na web, acesse:
> http://groups.google.com/group/python-brasil
>
> <*> Para sair deste grupo, envie um e-mail para:
> python-brasi...@googlegroups.com
>
> ---
> Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos
> Grupos do Google.
> Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie
> um e-mail para python-brasi...@googlegroups.com.
> Para mais opções, acesse https://groups.google.com/d/optout.



--
---
Pedro Werneck

SUNNYTEC - Ramon

unread,
Apr 7, 2016, 4:13:40 PM4/7/16
to python...@googlegroups.com
Muito Obrigado Pedro!

Se alguém quiser complementar, fique a vontade.

Atenciosamente,

Ramon de Lima


Você está recebendo esta mensagem porque se inscreveu no grupo "Python Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.

Sergio Garcia

unread,
Apr 7, 2016, 4:21:28 PM4/7/16
to python...@googlegroups.com
O sqlite é nativamente suportado no python, não precisa de nenhum lib adicional. É a melhor opção no seu caso.


Iuri

unread,
Apr 7, 2016, 4:34:00 PM4/7/16
to python...@googlegroups.com
Abrir, manusear e reescrever um CSV toda hora não é fácil. A chance de corromper ele é grande se você considerar acessos concorrentes.

Siga com sqlite. Ele tem funcionalidades suficientes para o que você precisa.

Marcius Oliveira

unread,
Apr 7, 2016, 4:38:36 PM4/7/16
to python...@googlegroups.com
Sei que minha resposta é mais do mesmo, mas, é valido reforçar. CSV realmente é bem complicado de manipular, sqlite é bem leve, simples e dependendo do sistema operacional que vai instalar no raspberry já vem instalado. +1 para o uso do sqlite.

SUNNYTEC - Ramon

unread,
Apr 7, 2016, 5:19:40 PM4/7/16
to python...@googlegroups.com
Obrigado Pessoal

Segue uma dúvida:

Eu estou programando e simulando no windows para depois enviar para o raspberry.
O sqlite vai funcionar nativamente nos dois sistemas ou terei que instalar alguns pacotes e utilizar código/métodos/classes diferentes para cada sistema?

Atenciosamente,

Ramon de Lima

Vinicius piassa ferreira

unread,
Apr 7, 2016, 9:38:29 PM4/7/16
to Python Brasil
Olá!

Me compadeci do CSV... Coitado ninguém foi a favor dele por isso venho aqui fazer minhas considerações. Segue abaixo:

- O CSV se for de tamanho pequeno ele proporciona melhor processamento e deve ser levado em conta a utilização quando a informação já esta correta sem dados desnecessários. 

- O CSV se mal projeto é mais fácil se corromper mas se bem projetado tem uma eficacia muito boa para aplicações pequenas (máximo 10 usuários). A exemplo disso lhe falo para ver sobre PARADOX aqui --> https://en.wikipedia.org/wiki/Paradox_(database)

- O CSV pode ser escrito por incremento não precisa refazer toda vez que for adicionar algo.

- O CSV pode rodar na memoria e depois dar o "commit", ou seja, gravar em disco como um SGBD qualquer.

- O CSV pode ser feito backup como qualquer outro banco.

Bom essas foram minhas considerações boas do CSV só para ele não ficar sem defesa! Minha opinião? Use um SGBD é mais seguro e mais fácil de se trabalhar! Mas se você possui um processamento limitado uma memoria limitada e sua aplicação for pequena por que não pensar em um CSV ou TXT ou o nome que você quiser dar já que a forma de operar são as mesmas.

Espero ter ajudado.

Vinicius Piassa


Elder Trevisan

unread,
Apr 8, 2016, 12:19:15 PM4/8/16
to Python Brasil
 Ramon, o Sqlite vem por padrão com o Python, pode ficar tranquilo, não precisará instalar nada é mais, é só importar ele no seu código e usar.

Gui Talarico

unread,
Apr 8, 2016, 1:04:26 PM4/8/16
to Python Brasil
Ramon - 
Apesar de não precisar instalar nada, depende do que for fazer, o SQL pode dar um baita trabalho para configurar e criar todos os queries que precisa para acesso e e comandos para insercao de dados.
Depois de apanhar muito com isso (mas aprendi muito!) agora uso ORM abstraction layers como SqlAlchemy ou Peewee.
SqlAlchemy eh super completo, mas as vezes ate demais.

O peewee eh super light-weight e funciona muito bem: http://docs.peewee-orm.com/en/latest/
Fiz um projeto usando ele recentemente:

Abs

SUNNYTEC - Ramon

unread,
Apr 8, 2016, 4:36:11 PM4/8/16
to python...@googlegroups.com
Obrigado Gui

Vou dar uma olhada...

Atenciosamente,

Ramon de Lima


--

Cleiton Bueno

unread,
Apr 11, 2016, 10:53:27 AM4/11/16
to Python Brasil
Olá Ramon, vou dar um pitaco de contribuição baseado em experiencia.

Sobre o database e qual usar, qual seria o uso de IO do banco de dados?
Ele irá persistir na Raspberry PI?
De tempos em tempos irá enviar para um servidor?
A placa/sistema irá operar 24x7?
Tem garantia de alimentação(redundância) para a placa não desligue bruscamente?

Trabalho a alguns anos com Linux Embarcado e já trabalhei em produtos que tiveram a necessidade de um banco de dados no produto, alguns persistente outros temporários e a maior preocupação, baseado no índice de frequência de IO do banco é sobre a Flash, no caso da Raspberry PI utiliza-se um SD-CARD, diferente de um Servidor Linux/Cloud onde se tem RAID's/LVM's e afins uma memoria Flash possui ciclos de vida baseado em numero de leituras/escritas sobre os blocos, coisa que em desenvolvimento não se percebe até que o equipamento em campo começa a morrer randomicamente e inexplicavelmente e ae começa a dor de cabeça.

Se tiver garantia de alimentação (usar no-breaks, baterias direto na placa e afins) e puder usar alguma tecnica de database in-memory RAM e de tempos em tempos envia para algum local ou até pode armazenar (store) em outra partição do SD-CARD, você será mais feliz com seu produto.

Então além da sua aplicação ser bem desenhada/projetada, recomendo projetar e elaborar bem esta parte de armazenar os dados, já sofri com Beaglebone Black, Advantech e outras placas com isso.

Existem diferenças que são as classes, recomendaria utilizar Class10 para melhor velocidade de IO e procurar Cartões Industriais para um range melhor para temperatura e imunidade a ruido.

Já fiz soluções onde usei collections, dicionarios, json, Banco de dados, e SQLite persistente e em memoria(https://www.sqlite.org/inmemorydb.html) muito bom este!

Espero ter colaborado com outro lado de banco de dados em Embarcados.

Abraço.


Att,
Cleiton Bueno


Blog | Linkedin | B2Open | Portal Embarcados | Twitter

Linux Counter: #557867 |  Skype: cleitonbuenosc



Em quinta-feira, 7 de abril de 2016 16:59:24 UTC-3, SUNNYTEC - Ramon escreveu:

SUNNYTEC - Ramon

unread,
Apr 11, 2016, 10:57:42 AM4/11/16
to python...@googlegroups.com
Cleiton

Obrigado pelas dicas. Vou estuda-las.

O Cartão de memória já é classe 10.


Atenciosamente,

Ramon de Lima
SUNNYTEC AUTOMACÃO INDUSTRIAL
PABX: (34) 3226-2095
Visite Nosso Site: www.sunnytec.com.br
Skype: sunnytec.automacao
Av. Sabinadas, 780 Bairro Nossa Sra. das Graças
Uberlândia - MG - CEP 38402-304

Cleiton Bueno

unread,
Apr 11, 2016, 11:24:27 AM4/11/16
to Python Brasil
Show!
Mais uma indicação, este SD-CARD da Advantech é muito bom, algoritmo interno top para wearling-level:
http://www.advantech.com/products/solid_state_disks,_ram__and_other_storage/sqf-isd/mod_077df138-4e99-4ae7-bb5e-e9145c8479b1

Fizemos testes intenso na época de IO, usando Kingston, Corsair entre outros e ele ficou dias rodando ainda depois que todos os demais ficaram danificados.
Reply all
Reply to author
Forward
0 new messages