Menu Docs

Página inicial do DocsDesenvolver aplicaçõesDrivers PythonPyMongo

Ferramentas de terceiros

Nesta página

  • Visão geral
  • Camadas semelhantes a ORM
  • Ferramentas de framework
  • Django
  • Flask
  • Outras ferramentas
  • Ferramentas de interoperabilidade
  • gevent
  • mod_wsgi
  • Drivers Python alternativos

Esta página descreve algumas bibliotecas de terceiros populares para trabalhar com PyMongo. Com exceção da Motor, todas as bibliotecas nesta página são mantidas pela comunidade. Para manter a lista atualizada, os projetos que não foram atualizados recentemente serão removidos ocasionalmente da lista ou movidos para o final.

Dica

Embora essas bibliotecas possam ser úteis, recomendamos que os novos usuários do PyMongo comecem trabalhando diretamente com o driver. O PyMongo por si só atenderá às necessidades da maioria das pessoas, e trabalhar com ele é instrutivo sobre como o MongoDB funciona.

As camadas do tipo ORM (object-relational-mapping-like) adicionam recursos como modelos e validação ao PyMongo.

  • MincePy é um mapeador de documentos de objetos (ODM) projetado para tornar qualquer Python objeto armazenável e consultável em um MongoDB database banco de . Ele foi projetado com o aprendizado de máquina e aplicativos de ciência computacional e experimental de grandes dados em mente. No entanto, é totalmente geral e pode ser útil para qualquer pessoa que queira organizar, compartilhar ou processar grandes quantidades de dados com a menor alteração possível em seu fluxo de trabalho atual.

  • Ming é uma biblioteca que permite impor esquemas em um banco de MongoDB database em seu Python aplicativo . Foi desenvolvido por SourceForge no curso de sua migração para o MongoDB. Consulte a publicação do blog de introdução para obter mais detalhes.

  • MongoEngine permite usar a sintaxe inspirada no ORM do Django para definir esquemas para documentos e collections de query. O código está disponível no Github.

  • MotorEngine é uma porta do MongoEngine para o Motor, permitindo o acesso assíncrono com o Tornado. Ele implementa as mesmas APIs de modelagem de forma portátil de dados, o que significa que um modelo definido no MongoEngine pode ser lido no MotorEngine. A fonte está disponível no Github.

  • uMongo é um ODM Python MongoDB que foi criado para atender duas necessidades: a falta de um ODM assíncrono e a dificuldade de serializar documentos com outros ODMs. uMongo funciona com vários drivers: PyMongo, TxMongo, motor_asyncio e mongomock. A fonte está disponível no Github.

Esta seção lista ferramentas e adaptadores que foram projetados para funcionar com várias estruturas e bibliotecas Python.

Mesmo sem um backend do Django, você pode usar o MongoDB e o PyMongo com a maior parte do que o Django oferece. Alguns recursos do Django que exigem django.db, como administrador, autenticação e sessões, não funcionarão ao usar apenas o MongoDB.

  • Mecanismo Django MongoDB é um MongoDB database backend de para Django que oferece suporte a agregações Django, atualizações atômicas, objetos embarcados, Map/Reduce e GridFS. Ele permite que você use a maioria das funcionalidades integradas do Django, incluindo ORM, admin, autenticação, frameworks de site e sessão e cache. Para obter mais informações, consulte o tutorial do Mecanismo Django MongoDB.

  • Django MongoEngine é um backend MongoDB para Django. O repositório também inclui um aplicativo de exemplo. Para obter mais informações, consulte a documentação do Django MongoEngine.

  • Djogo é um connector para usar o Django com o MongoDB como backend do banco de dados. Com o Djogo, você pode usar a interface de administração do Django para adicionar e modificar documentos no MongoDB. O código fonte do Djogo está hospedado no Github, e o pacote Djogo está no PyPI.

  • Mango fornece backends do MongoDB para sessões e autenticação django.db do Django (ignorando totalmente).

  • Log4mongo é um Python manipulador de registro flexível que pode armazenar registros no MongoDB usando collections normais e limitadas.

  • mongobox é uma ferramenta para executar uma instância do MongoDB em sandbox a partir de um aplicativo Python.

  • mongodb_beaker permite que você use o MongoDB como backend para as APIs do Béaker sistema de cache e sessão. A fonte está no Github.

  • MongoLog é um manipulador de registro Python que armazena registros no MongoDB usando uma coleção limitada.

  • role.recipe.mongodb é um Buildout receita para baixar e instalar o MongoDB.

Esta seção lista ferramentas que oferecem suporte à interoperabilidade com outras ferramentas.

O PyMongo usa funções de thread e soquete da biblioteca padrão Python. Ao usar sgevent, o PyMongo pode fazer E/S assíncrona com soquetes sem bloqueio e agendar operações em espaços verdes em vez de threads.

Para usar o gevent com o PyMongo, chame o método monkey.patch_all() do gevent antes de carregar qualquer outro módulo, conforme mostrado no exemplo a seguir:

# You must call patch_all() *before* importing any other modules
from gevent import monkey
_ = monkey.patch_all()
from pymongo import MongoClient
client = MongoClient()

Importante

Feche o MongoClient para evitar o bloqueio

Se você chamar monkey.patch_all() quando seu aplicativo for iniciado, MongoClient usará whitelets em vez de threads para monitorar a integridade do servidor. Ao encerrar, se o seu aplicativo chamar o método ~gevent.hub.Hub.join() sem primeiro encerrar esses verdes, a chamada para o método ~gevent.hub.Hub.join() será bloqueada indefinidamente.

Para evitar isso, feche ou desreferenciar qualquer objeto MongoClient ativo antes de sair do aplicativo. Em algumas estruturas de aplicativos, você pode usar um manipulador de sinal para encerrar os whitelets de background quando seu aplicativo recebe SIGHUP, conforme mostrado no exemplo a seguir:

import signal
def graceful_reload(signum, traceback):
"""Explicitly close some global MongoClient object."""
client.close()
signal.signal(signal.SIGHUP, graceful_reload)

Esse problema afeta aplicativos que usam versões do uWSGI anteriores à 1.9.16 ou versões do uWSGI mais recentes com a opção -gevent-wait-for-hub . Para obter mais informações, consulte o registro de alterações do uWSGI.

O mod_wsgi O pacote fornece um módulo Apache que implementa uma interface compatível com WSGI para hospedar aplicativos web baseados em Python no servidor web Apache.

Para executar seu aplicativo PyMongo em mod_wsgi, siga estas diretrizes:

  • Use a diretiva WSGIDaemonProcess para executar mod_wsgi no modo daemon. Se a sua configuração do mod_wsgi incluir apenas a diretiva WSGIScriptAlias , ela será executada no modo incorporado.

  • Use a diretiva WSGIApplicationGroup %{GLOBAL} para garantir que seu aplicativo seja executado no interpretador Python principal do daemon, em vez de em um subinterpretador. Isso evita um pequeno custo incorrido ao decodificar BSON em um subinterpretador.

  • Use a diretiva WSGIProcessGroup para atribuir cada aplicativo a um daemon separado. Isso garante que os aplicativos não afetem o estado uns dos outros.

A seguinte configuração mod_wsgi mostra como usar as diretivas anteriores para executar seu aplicativo PyMongo:

<VirtualHost *>
WSGIDaemonProcess my_process
WSGIScriptAlias /my_app /path/to/app.wsgi
WSGIProcessGroup my_process
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>

Se você tiver vários aplicativos PyMongo, coloque cada um em um daemon separado no grupo de aplicativos global:

<VirtualHost *>
WSGIDaemonProcess my_process
WSGIScriptAlias /my_app /path/to/app.wsgi
<Location /my_app>
WSGIProcessGroup my_process
</Location>
WSGIDaemonProcess my_other_process
WSGIScriptAlias /my_other_app /path/to/other_app.wsgi
<Location /my_other_app>
WSGIProcessGroup my_other_process
</Location>
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>

Observação

Muitas extensões do Python C têm problemas ao executar em vários subinterpretadores do Python. Essas dificuldade são explicadas na documentação de Py_NewInterpreter e nos vários sub-interpretadores do Python seção da documentação do mod_wsgi.

Esta seção lista alternativas ao PyMongo.

  • Motor é um driver MongoDB completo e sem bloqueio para aplicativos Python Tornado.

  • TxMongo é um driver assíncrono Twisted Python para MongoDB.

  • MongoMock é uma pequena biblioteca para ajudar a testar o código Python. Ele usa o PyMongo para interagir com o MongoDB.

← IDs universalmente únicos (UUIDs)