pymongo = python + mongodb
DESCRIPTION
Introdução ao banco de dados não-relacional Orientado a Documentos MongoDB e apresentação do PyMongo, um driver/conector de Python para MondoDB. Realizada no VI Encontro do Python User Group de Pernambuco, no dia 14/08/2010.TRANSCRIPT
http://groups.google.com/group/pug-pe
+
?
De acordo com o mongoDB.org:
“Banco de dados escalável, de alta-performance, open-source, schema-
free, orientado-a-documentos.”
documentos
{nome: 'mongo', tipo: 'BD'}
JSON ?
dicionários !
schema-free ?
● tipagem dinâmica
● migrations de graça
● ainda posso usar índices
migrations ?
{nome: 'mongo', tipo: 'BD'}
apenas faça:
{nome: 'mongo', tipo: 'BD', versao: 1.6}
muito + coisas legais
● Agregation + MapReduce
● Capped Collections
● GridFS
● Replica Sets
● Auto-Sharding
● Joins
pode fazer falta:
PyMongo
driver do mongoDB
para Python
instalando (com setuptools):
“easy_install pymongo”
usando:
>>> import pymongo
>>> from pymongo import Connection
>>> connection = Connection()
escolhendo uma base:
O mongoDB suporta várias bases independentes por instância.
Para acessar você pode usar dois estilos.
escolhendo uma base:
>>> db = connection.pugpe
ou
>>> db = connection['pugpe']
escolhendo uma coleção:
>>> membros = db.membros
ou
>>> membros = db['membros']
criando documentos:
>>> b = {'nome': 'Brunno', 'Idade': 24, 'linguagem': 'Python'}
salvando na coleção:
>>> membros.insert(b)
o campo _id:
todo documento inserido no banco deve conter um campo _id com valor único em toda coleção, caso ele não
exista é automaticamente adicionado (nesse caso usando o tipo binário ObjectId, que servirá como índice
padrão).
resgatando um documento:
>>> membros.find_one()
o find_one() já retorna um dicionário, não necessitando haver nenhum tipo
de conversão para trabalharmos.
o find_one() também suporta parâmetros para consultar elementos
específicos:
>>> membros.find_one( {'nome': 'Brunno'})
inserções em lote:
para facilitar nossa vida, podemos passar uma lista como argumento do insert(), ele vai inserir cada elemento
da lista, enviando somente um comando para o servidor.
>>> mais = [{'nome': 'Rodrigo', 'idade': 24, 'linguagem': 'Python'}, {'nome': 'Luciano', 'idade': 32, 'linguagem': ['Python', 'Perl']}
>>> membros.insert(mais)
para pegar mais de um documento usamos o find(), que agora nos retorna
um Cursor iterável:
>>> membros.find({'idade': 24})
lembram do schema-free?
>>> membros.find({'linguagem': 'Python'})
mais informações?
http://www.mongodb.org
http://api.mongodb.org/python
outros projetos:
MongoKit
Ming
MonoEngine
Django non-rel