Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Avelino.US

Python e MongoDB

Recommended Posts

Tenho bastante aplicações em produção trabalhando com MongoDB e outros database NoSQL ambas escrita em Python, vou escrever um pouco como usar o MongoDB na linguagem Python.

 

Como em qual quer outra linguagem não tem muito segredo. No Python temos a LIB chamada PyMongo que simplifica muito o trabalho do programador.

 

Contando que o PyMongo já estejá instalado, seguimos em frente.

 

Como fazer um conexão:

>>> from pymongo import Connection
>>> connection = Connection()
OU

>>> connection = Connection('localhost', 27017)

Usar/Criar um Database:

>>> db = connection.forum_database
OU

>>> db = connection['forum-database']

O MongoDB usa um formato jSON para sua syntax, veja abaixo:

>>> forum = {"author": "Thiago Avelino",
...         "text": "Python e MongoDB",
...         "tags": ["mongodb", "python", "pymongo"]}

Inserindo em um Documento, usando o método insert():

>>> imaster = db.imaster
>>> imaster.insert(forum)
ObjectId('4c7400f42d73303fd2000000')

Após rodar o insert() ele criou um documento fisico no servidor, podemos ver este registro da seguinte forma:

>>> db.collection_names()
[u'imaster', u'system.indexes']

Selecionando apenas um documento com find_one()

>>> imaster.find_one()
{u'text': u'Python e MongoDB', u'_id': ObjectId('4c7400f42d73303fd2000000'), u'author': u'Thiago Avelino', u'tags': [u'mongodb', u'python', u'pymongo']}

Filtrando, usando condições para selecionar:

>>> imaster.find_one({"author": "Thiago Avelino"})
{u'text': u'Python e MongoDB', u'_id': ObjectId('4c7400f42d73303fd2000000'), u'author': u'Thiago Avelino', u'tags': [u'mongodb', u'python', u'pymongo']}

Contando:

>>> imaster.count()
1

Temos também alguns ORM Python que trabalha com o MongoDB, um exemplo é o MongoEngine que trabalha exatamente igual o ORM do Django.

Veja um exemplo usando MongoEngine:

class BlogPost(Document):
    title = StringField(required=True, max_length=200)
    posted = DateTimeField(default=datetime.datetime.now)
    tags = ListField(StringField(max_length=50))
 
class TextPost(BlogPost):
    content = StringField(required=True)
 
class LinkPost(BlogPost):
    url = StringField(required=True)
 
# Create a text-based post
>>> post1 = TextPost(title='Using MongoEngine', content='See the tutorial')
>>> post1.tags = ['mongodb', 'mongoengine']
>>> post1.save()
 
# Create a link-based post
>>> post2 = LinkPost(title='MongoEngine Docs', url='hmarr.com/mongoengine')
>>> post2.tags = ['mongoengine', 'documentation']
>>> post2.save()
 
# Iterate over all posts using the BlogPost superclass
>>> for post in BlogPost.objects:
...     print '===', post.title, '==='
...     if isinstance(post, TextPost):
...         print post.content
...     elif isinstance(post, LinkPost):
...         print 'Link:', post.url
...     print
...
=== Using MongoEngine ===
See the tutorial
 
=== MongoEngine Docs ===
Link: hmarr.com/mongoengine
 
>>> len(BlogPost.objects)
2
>>> len(HtmlPost.objects)
1
>>> len(LinkPost.objects)
1
 
# Find tagged posts
>>> len(BlogPost.objects(tags='mongoengine'))
2
>>> len(BlogPost.objects(tags='mongodb'))
1

exemplo tirado do site http://blog.avelino.us/2010/07/orm-python-para-mongodb-mongoengine.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa João faz mesmo, eu até iria me oferecer para fazer isso mas o tempo anda meio curto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Show Avelino.US,

 

Se não se importar, vou fazer uma réplica desse post, porém em PHP, o que acha ?

 

Muito bom João, acho uma ideia muito boa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe perguntar, mas o que o último código faz? É que eu sou iniciante e não entendo muitas algumas coisas. Pelo que me parece ele cria um post em um blog, é isso?

 

E o que é ORM Python? Agradeço se puder explicar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Electron o segundo codigo que você deve estar se referindo ele cria uma estrutura no MongoDB e depois faz alguns insert / select / count

 

ORM = Object relational mapping, você pode ler mais sobre isso aqui: http://en.wikipedia.org/wiki/Object-relational_mapping

 

Pessoal que ainda não viu postei no iMasters.com.br um artigo mais detalhado.

 

http://imasters.com.br/artigo/18053/programacao/trabalhando_com_python_e_mongodb/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Show de bola só fazendo a comunidade NOSQL crescer!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.