Salvar dados em banco

490 views
Skip to first unread message

Lusac

unread,
Nov 10, 2011, 2:40:05 PM11/10/11
to Django Brasil
Olá galera.

Tenho um sistema aonde listo alguns dados de paginas da web e preciso
salva-los no banco de dados, mas não sei como proceder.

Do jeito que estou fazendo(meio que na gambiarra), estou
sobrescrevendo um mesmo dado quando salvo, ao invez de salvar novos
dados.

Oque deveria fazer:
Titulo 1, texto 1, SALVO!
Titulo 2, texto 2, SALVO!

No entanto estou sobrescrevendo os primeiro, e salvando só o titulo e
texto 2.


Meu código está mais ou menos assim:

for j in range(total_posts):
for i in conteudo.findAll(matches):
form.save(title=i.title.string,
data=i.pubdate.string,link=i.link.string)

Como esses dados vão ser salvos de tempos em tempos, nem sei se o
correto é usar form. Provavelmente oq estou fazendo é uma gambiarra =\

Alguem sabe como me ajudar?

Abraços.




marcus fernando correa barbosa

unread,
Nov 10, 2011, 2:52:28 PM11/10/11
to django...@googlegroups.com
Nao entendi sua pergunta, geralmente aplicativos django, ja geram o Banco automaticamente, assim que vc edita  o models.py e sincroniza o banco na pasta do projeto





--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

Lusac

unread,
Nov 10, 2011, 3:01:48 PM11/10/11
to Django Brasil
A models já está criada.

O que não consigo é salvar uma serie de dados de uma só vez. Sem
precisar ter que escrever manualmente e clicar em salvar.

Preciso que enquanto eu extraio dados de paginas da web(isso já está
sendo feito), esses dados já vão sendo armazenados no banco
automaticamente.

Abraços!

marcus fernando correa barbosa

unread,
Nov 10, 2011, 3:07:39 PM11/10/11
to django...@googlegroups.com
Bem a arquitetura CRUD geralmente é feita na propria VIEW mesmo vou te dar um exemplo fica mais facil:

def atualizarEmpresa(request, empresa_id):
    e = get_object_or_404(Empresa, pk=empresa_id)
    e.nome = request.POST['nome']
    e.estado = request.POST['estado']
    e.municipio = request.POST['municipio']
    e.bairro = request.POST['bairro']
    e.cep = request.POST['cep']
    e.telefone = request.POST['telefone']
    e.save()
    return render_to_response('empresa/detailEmpresa.html', {'detalhes_da_empresa': e})


Nessa view que foi apontada pela minha urls.py do meu projeto o que ela faz
ela recebe um request e o id de um model que no caso se chama empresa, esses dados sairam de um formulario com um method='POST' e dai na minha action eu falei o caminho pra url que apontou para o callback atualizarEmpresa

e dai eu setei com linguagem python mesmo. Eu nao sei se eu pude ser claro, qualquer coisa retorne o email que eu irei ser mais especifico  =)


Guilherme Kuhn

unread,
Nov 10, 2011, 3:14:26 PM11/10/11
to django...@googlegroups.com
Acho que entendi o que você quer fazer.

Para salvar dados desta forma, você pode usar diretamente o model. O form é mais usado quando se tem entrada do usuário, onde devem existir validações especificas para isso.

Para criar um novo objeto do seu model, pode-se passar todos os argumentos pelo kwargs [1] (pode ser um dicionário com ** na frente ou campo='valor', campo2='valor')

pode ver um exemplo com o seu código aqui: [2]



Em 10 de novembro de 2011 18:01, Lusac <lus...@gmail.com> escreveu:
--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>



--
Desenvolvedor de sites e aplicações web em Python/Django.
contato = dict([
    ('nome', 'Guilherme Kuhn'),
    ('site', 'http://blog.gkuhn.com'),
    ('twitter', '@gkuhn0'),
])


Lusac

unread,
Nov 10, 2011, 3:16:18 PM11/10/11
to Django Brasil
Entendi. Mas como eu faço pra repetir esse processo N vezes? Eu tentei
colocar um for, mas ele passou a salvar todos dados na mesma linha do
banco de dados. >.<

Lusac

unread,
Nov 10, 2011, 3:18:30 PM11/10/11
to Django Brasil
Valeu guilherme é isso mesmo. Por disso senti que estava fazendo uma
gambiarra hauhauhau.

Vou dar uma lida nesta documentação.

Obrigado galera!

marcus fernando correa barbosa

unread,
Nov 10, 2011, 3:20:06 PM11/10/11
to django...@googlegroups.com
OPA sim lucas , pode se utilizar o models diretamente, mas eu estou simplesmente te dando um exemplo que eu montei gerando um template e nesse template com um link apontando para a essa view tendeu =) nesse caso é a view que faz toda a CRUD, a unica coisa que eu fiz foi implementar um visual grafico e atraveś de uma comunicação com esse visual através da url efetuar uma persistencia dentro da view.
A respeito das validações , depende o que vc esta utilizando, eu quando mexia com php eu usava muito jquery e fazia as validações do formulario usando somente essa biblioteca javascript

Eu nao sei qual template que vc esta usando, mas o jquery é uma forma interessante de validar esse formulario seu =)


para maiores informações acesse esse site aqui, é bem simples e direto

www.videoaulasbrasil.com

Guilherme Kuhn

unread,
Nov 10, 2011, 3:26:07 PM11/10/11
to django...@googlegroups.com
Sei que não é o foco da thread, mas

Marcus, não é recomendável fazer a validação de dados do usuário APENAS por javascript. Existem inúmeras formas de desativar o javascript e simplismente ignorar todas estas validações. Neste caso que você citou, o recomendádo é usar a API de forms do django, para auxiliar na validação dos dados e na exibição dos erros ao usuário.

Abraço!!

Lusac

unread,
Nov 10, 2011, 3:45:09 PM11/10/11
to Django Brasil
Consegui gente! Por algum motivo, em vez de salvar 10 item, foram
salvos 100 hauahuahuahuahauhauhu Mas provavelmente foi um erro no meu
for. Só arrumar o código e correr pro abraço.

Valeu gente! Menos uma coisa pra eu me preocupar :)

Abraços!

Lusac

unread,
Nov 15, 2011, 1:31:13 PM11/15/11
to Django Brasil
Só uma ultima duvida gente.

Como eu estou listando dados de paginas da web, se por algum motivo a
página estiver offline ou der algum erro e não for acessada, o django
para todo processo. Como eu posso fazer pra ele "pular" o erro e
continuar a procura?

Exemplo - tosco:
http://goo.gl/0SpRK

Resumindo: Ao encontrar uma pagina offline(por exemplo) ou não
conseguir preencher um determinado item do banco de dados, como fazer
pra pular esse erro, pular o save, e ir para o próximo objeto do FOR ?

Obrigado e Abraços!

Anderson Cardoso

unread,
Nov 15, 2011, 1:34:25 PM11/15/11
to django...@googlegroups.com
try/except

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>



--
Anderson Pierre Cardoso
Computer Engineer - University of Sao Paulo

[gtalk]: apierre...@gmail.com
[blog]:  http://anderson-hacklife.blogspot.com/


"FreeSoftware -> free as in freedom"
  |  mande-me documentos em formatos livres (ODF) -> http://www.infowester.com/odf.php

Lusac

unread,
Nov 15, 2011, 1:59:00 PM11/15/11
to Django Brasil
De fato...
Eu achava que o try/except paresse o processo tbm, mas ele continuou
rodando.

Obrigado.

Elyézer Mendes Rezende

unread,
Nov 16, 2011, 5:33:31 AM11/16/11
to django...@googlegroups.com
Vc deve parar o processo se o bloco except for acessado.

2011/11/15 Lusac <lus...@gmail.com>:

> --
> Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
> Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

--
Elyézer Mendes Rezende
http://elyezer.com

Reply all
Reply to author
Forward
0 new messages