Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

CouchDBKit - Integrando CouchDB e Django

Rafael Lucas Silva, Estagiário, IBM
Estudante do ultimo ano do Curso de Análise e Desenvolvimento de Sistemas pela UNICAMP, possui conhecimento em Redes e linguagens de programação tais como PERL e PYTHON, em suas horas vagas, gosta principalmente de brincar com Float, seu cachorro e sair com os amigos.Perfil My Developer Works:http://www.ibm.com/developerworks/mydeveloperworks/profiles/user/RafaelLucas.

Resumo:  Nesse artigo irei abordar sobre como utilizar o banco de dados não-relacional, Couchdb, juntamente com o Django, um Framework Web. Estarei mostrando como fazer a instalação do CouchDBKit e como configurá-lo dentro do Django e também um exemplo de inserção no banco de dados.

Data:  23/Nov/2011
Nível:  Introdutório
Atividade:  344 visualizações
Comentários:  


O que é o CouchDB

CouchDB é um banco de dados orientado a documento que utiliza o algoritmo de MapReduce para realizar consultas e indices. O CouchDB é escrito em Erlang, uma linguagem robusta e funcional para a construção simulânea de sistemas distribuídos, permitindo maior escalabilidade e flexibilidade do banco de dados.

O CouchDB oferece também a API RESTful JSON que pode ser acessada a partir de qualquer ambiente, o qual permite solicitações do tipo HTTP. Devido a isso, podemos utilizá-lo juntamente com um framework Web.

O que é o Django

Django é um framework Web high-level escrito em Python que proporciona o desenvolvimento de aplicações web de maneira fácil, rápida e de alto-desempenho utilizando o padrão MVC (Model-View-Controller).

Django utiliza o máximo de automatização possível e adere ao princípio DRY (Don't Repeat Yourself), fazendo com que o desenvolvedor aproveite ao máximo o código ja escrito.

O que é o CouchDBKit

Couchdbkit oferece um cliente completo e fácil de acessar e gerenciar o banco de dados CouchDB. Ele permite a você, gerenciar os seguintes ítens: servidores CouchDB, documentos em databases e acessar sistemas de busca nos bancos. Todos os objetos refletem por conveniência em sua maioria objetos python. Objetos de servidores e bancos de dados poderiam ser usados, por exemplo, como um objeto python do tipo dict.

from couchdbkit import Server
s = Server()
db = s.create_db("NewDatabaseName")
db['user'] = { 'name': 'Rafael' }
doc = db['user']


Criando uma nova estrutura de aplicação Web usando o Django:

A aplicação WEB é executada num ambiente distribuído, onde cada parte que compõe o programa está localizada em uma maquina diferente. O programador, e o programa, nem sempre tem consciência deste fato. Sabendo disso iremos criar uma nova aplicação em django que irá suportar o CouchDB.

Na linha de comando, vá até ao diretório onde gostaria de armazenar seu código e em seguida, execute o seguinte comando:

django-admin.py startproject newProject

Feito isso, um novo diretório será criado, com a seguinte estrutura:

newProject/

__init__.py

manage.py

settings.py

urls.py

__init__.py: Um arquivo vazio que descreve ao Python que esse diretório deve ser considerado como um pacote Python.

manage.py: Utilitário de linha de comando que permite a você interagir com esse projeto Django.

settings.py: Configurações para o projeto Django criado. Configurações do Django irá dizer-lhe tudo sobre como funcionam as configurações do projeto.

urls.py: As declarações de URLs para esse projeto Django; um "índice" do seu site criado a partir do Django.

Com o novo projeto criado, pode-se executar o seguinte comando, que irá executar o servidor na porta (8000) padrão:

python manage.py runserver

feito isso poderá acessar o projeto através da url http://localhost:8000

Criando uma nova aplicação

Após criada a estrutura, a nova aplicação poderá ser criada, executando o seguinte comando:

python manage.py startapp newApplication

Isso fará com que seja criado um novo diretório estruturado dessa forma:

newApplication/
    __init__.py
    models.py
    tests.py
    views.py

Integrando o CouchDB a nova aplicação Django:

Criada a nova aplicação, a integração com o couchdb se derá através do couchdbkit. Para que isso aconteça, deverá ser adicionado ao arquivo settings.py (arquivo criado na raiz do projeto) a seguinte configuração, onde cada linha representa uma aplicação já instalada, que será usada pelo Django, quando for criada uma nova:

INSTALLED_APPS = (

     'django.contrib.auth',

     'django.contrib.contenttypes',

     'django.contrib.sessions',

     'django.contrib.sites',

     'couchdbkit.ext.django',

     'newProject.newApplication'

 )             

Feito isso, deverá ser adicionado ao arquivo urls.py (também localizado na raiz do projeto) as views que serão utilizadas pela aplicação. Um exemplo seria se quiséssemos acessar uma informação no banco de dados relacionado ao nome de uma banda. Poderiamos requisitar uma instrução GET na pagina http://localhost:8000/nomeBanda/<NOMEDABANDA>

Tendo em vista o exemplo pode-se adicionar a seguinte entrada no arquivo urls.py:

from django.conf.urls.defaults import *

 

urlpatterns = patterns('newProject.newApplication.views',

#será criada uma nova view que será acessada pelo usuário na aplicação web

     url(r'/nomeBanda/(.*?)/?$', 'getNomeBanda'),

)	 

Adicionada a nova configuração no arquivo urls.py o próximo arquivo 
a ser configurado é views.py, localizado em: newProject/newApplication/views.py

#importando módulo do couchdb
import couchdb

from datetime import datetime

from django.shortcuts import render_to_response as render

from django.template import RequestContext, loader, Context

from django.utils import simplejson

from django.http import HttpResponse

 
#importando módulo do couchdbkit
import couchdbkit

from couchdbkit.ext.django.forms import DocumentForm

 
 
#Conectando no servidor do couchdb
couch = couchdb.Server()

#conectando na base de dados, se caso não contrário irá criar um nova.
try:

  db = couch['databaseName']

except:

  db = couch.create('databaseName')

#função que irá retornar os dados gravados dentro da base de dados utilizada
def getNomeBanda(request,nomeBanda):
  for i in db:
    if(db[i]['nomeBanda'] == nomeBanda):
      return HttpResponse(db[i], mimetype='application/json')

O exemplo acima foi utilizado a requisição GET, se quisessemos fazer uma inserção no banco poderiamos utilizar a requisição POST, incluir a nova view no arquivo urls.py, alterar o newProject/newApplication/views.py e por fim adicionar ao arquivo newProject/newApplication/models.py uma estrutura JSON Document o qual acessariamos em views.py.

Referencias bibliograficas:

http://couchdbkit.org/

https://docs.djangoproject.com/en/1.3/intro/tutorial01/

https://www.djangoproject.com/

http://couchdb.apache.org/


Sobre o autor

Rafael Lucas Silva

Estudante do ultimo ano do Curso de Análise e Desenvolvimento de Sistemas pela UNICAMP, possui conhecimento em Redes e linguagens de programação tais como PERL e PYTHON, em suas horas vagas, gosta principalmente de brincar com Float, seu cachorro e sair com os amigos.Perfil My Developer Works:http://www.ibm.com/developerworks/mydeveloperworks/profiles/user/RafaelLucas.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=776201
ArticleTitle=CouchDBKit - Integrando CouchDB e Django
publish-date=11232011

Conheça a IBM da sua cidade

Virtual Branch Office Brasil

A IBM está mais perto do que você imagina!


Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).