MongoDB no Python 3

Publicado por Perfil removido em 04/09/2013

[ Hits: 9.050 ]

 


MongoDB no Python 3



Linux: MongoDB no Python 3 No começo do ano, falei sobre Python 3 e sua adequação para aprender lógica e programação. Hoje, vou falar sobre banco de dados e como integrá-lo com linguagens como o Python.

MongoDB é um sistema de banco de dados multi-plataforma orientado a documentos, esboço livre. Como eu expliquei, isso significa que cada entrada ou registro pode ter um esquema de dados diferente, com atributos ou "colunas" que não precisam ser repetidos a partir de um registro para outro.

Ele é escrito em C++, dando-lhe uma certa proximidade com os recursos de Hardware da máquina, por isso, ele é muito rápido para implementar tarefas. Também está licenciado como GNU AGPL 3.0, de modo que é um software de licença livre. Ele funciona em sistemas operacionais Windows, GNU/Linux, OS X e Solaris.

As características de destaque do MongoDB, é a sua velocidade, seu rico e simplificado sistema de consulta para o conteúdo do banco de dados. Pode-se dizer que ele atinge um equilíbrio perfeito entre desempenho e funcionalidade, incorporando muitos dos tipos de consultas que nós usamos em nosso sistema de banco de dados relacional preferido, como MySQL e PostgreSQL mas sem sacrificar o desempenho.

No MongoDB cada registro, ou conjunto de dados, é chamado de documento. Os documentos podem ser agrupados em coleções, o que poderia dizer que são o equivalente de tabelas em um banco de dados relacional (apenas as coleções podem armazenar documentos com formatos muito diferentes, ao invés de estar sujeito a um esquema fixo).

Você pode criar índices para alguns atributos do documento, de modo que MongoDB manterá uma estrutura interna eficiente para o acesso à informação para os conteúdos desses atributos.

Os vários documentos são armazenados como BSON, ou Binary JSON, que é uma versão modificada do JSON, que permite buscas rápidas de dados. Para se ter uma ideia, BSON salva explicitamente os comprimentos dos campos, índices de matriz e outras informações úteis para os dados de digitalização.

É por isso que, em alguns casos, o mesmo documento em BSON ocupa um pouco mais de espaço do que o que seria necessário para ser armazenados diretamente em formato JSON. Mas, uma das ideias-chave em sistemas NoSQL, é que o armazenamento é barato e é melhor aproveitá-la, se você entra em um aumento significativo na velocidade de localizar informações em um documento.

No entanto, na prática, significa nunca ver o formato no qual os dados são armazenados verdadeiramente e sempre trabalhar em um documento em JSON, tanto a verificação de informações e loja.

Um exemplo de um documento no MongoDB, pode muito bem ser a seguinte:

mongo

Saída:
MongoDB shell version: 2.2.3
connecting to: test

> use mytest

Saída:
switched to db mytest


> db.testcollection.insert({"message":"Hello, remote user!"})
> db.addUser('myuser', 'superpassword')
{ "n" : 0, "connectionId" : 2, "err" : null, "ok" : 1 }
{
    "user" : "myuser",
    "readOnly" : false,
    "pwd" : "ecb2c08916b34e477c33c10cec2ae416",
    "_id" : ObjectId("512c6d9dcc5d103a896944ae")
}
> db.testcollection.find()
{ "_id" : ObjectId("512c6d85cc5d103a896944ad"),
  "message" : "Hello, remote user!"
}

Acima, resumimos as questões básicas, agora vamos à instalação no Ubuntu 12.04:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
$ echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
$ sudo apt-get update && sudo apt-get install mongodb-10gen


Depois de devidamente instalado, vamos às configurações:

nano /etc/mongodb.conf

Descomente:

auth = true

Comente:

#bind_ip = 127.0.0.1

sudo service mongodb stop
$ sudo service mongodb start


Instalando o Driver para conexão com o banco de dados, no caso o PyMongo, no terminal GNU/Linux como root, digite:

Obs.: não feche o terminal depois dos comandos abaixo, nós vamos precisar dele para outras instalações.

# wget http://python-distribute.org/distribute_setup.py
# python distribute_setup.py
# easy_install pymongo


Com a linha acima, o PyMongo fica disponível para o Python que vem pré-instalado no GNU/Linux, para funcionar no Python 3. Agora, para funcionar na versão ou numa superior, no terminal do GNU/Linux aberto anteriormente como root, ainda digite:

# python3.3 distribute_setup.py
# easy_install pymongo
# python3.3


O último comando deve retornar:
Python 3.3.2 (default, Sep  2 2013, 09:42:42)
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Obs.: na linha de comando do Python 3.3 interativo, digite:

>> import pymongo

Se ele pular a linha, beleza. Está tudo configurando perfeitamente. Se ele apresentar o erro, revisar os comandos anteriores.

O último teste é escrever um programa em Python para acessar a base de dados de teste do MongoDB. Agora, com o IDLE ou o Geany, COPIE para um arquivo novo e salve com a extensão ".py":

# coding:utf8
#
# Teste de acesso ao MONGODB
#

import os
os.system("clear")  # Limpando a tela

from pymongo import MongoClient
mongoserver_uri = "mongodb://myuser:superpassword@10.2.0.182:27017/mytest"  ### OBS: O IP TEM QUE SER O DA MAQUINA COM O MONGODB ESTA INSTALADO
conection = MongoClient(host=mongoserver_uri)
db = conection['mytest']
collection = db['testcollection']
print (collection.find_one())
## --------- fim do arquivo:

Execute o programa. O resultado vai ser o mesmo do teste acima:
> {u'message': u'Hello, remote user!', u'_id':
      ObjectId('5221030f0ba4e7a74ec82fe5')}

Outras dicas deste autor

Instalando o Gnome 41 no Debian 11 Bullseye

Convertendo arquivos com extensão amr para mp3

Sistema inicializando em modo de emergência depois de excluída uma partição

Instalando Drivers NVIDIA no Ubuntu 20.04

Impressora HP Deskjet F4480

Leitura recomendada

Instalando e executando o DBDesigner no Arch Linux

SQLiteStudio - Gerenciador de banco de dados SQLite

PostgreSQL 8.2 no Ubuntu 8.10

Alterando a senha de root do MySQL no Slackware 14.1

PostgreSQL - "database server: mainError: could not exec" [Resolvido]

  

Comentários
[1] Comentário enviado por tonnytg em 26/11/2014 - 19:17h

Ótima dica, bem elaborada e direta.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts