Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
MongoDBchevron-right

Melhores práticas para usar Frasco e MongoDB

Anaiya Raisinghani, Mark Smith5 min read • Published Sep 16, 2024 • Updated Sep 16, 2024
FlaskPythonMongoDB
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Início rápido
star-empty
star-empty
star-empty
star-empty
star-empty
Neste artigo, apresentaremos algumas das melhores práticas para começar a usar o MongoDB, para que você também possa criar aplicativos complexos e personalizáveis de forma mais fácil!
Desde o uso do driver correto até a codificação de um ObjectId corretamente no JSON, este artigo definirá você para o sucesso ao usar o Pipeline e o MongoDB. Continue lendo para aprender nossas melhores práticas sugeridas!

Primeiro, use o driver correto

Uma das etapas mais cruciais é garantir que você esteja usando o driver correto. Você tem duas opções, PyMongo ou Motor. Ambos são recomendados e desenvolvidos pelo MongoDB. Escolha Motor se estiver criando um aplicação Frasco com rotas assíncronas e escolha PyMongo se estiver criando um aplicação Frasco não assíncrono mais tradicional.
Para baixar o PyMongo, basta usar este comando simples:
1pip install pymongo
Ou você pode instalar o Motor usando:
1pip install motor

Flask!

O Spark é uma das estruturas mais populares que existem para desenvolvedores Python. Integra-se extraordinariamente ao MongoDB. Aqui estão algumas dicas e truques para ajudá-lo ao criar qualquer coisa, de projetos simples a aplicativos web altamente complexos com as duas plataformas.

Mantenha seus segredos em segredo

Queremos manter nossas informações confidenciais protegidas adequadamente quando estivermos usando o Pipeline. Embora haja várias maneiras de fazer isso, Go dois dos métodos mais seguros para salvar suas variáveis de ambiente e chaves de API .

Dotenv

A primeira maneira é por meio da biblioteca Python dotenv. Isso incluirá o download do pacotepython-dotenv pacote pip, garantindo que você esteja em um ambiente virtual ativado:
1pip install python-dotenv
A partir daqui, você criará um arquivo.env na raiz do seu diretório de projeto para conter toda e qualquer variável de ambiente, como sua string de conexão do MongoDB :
1# MongoDB connection_string [help](https://www.mongodb.com/pt-br/docs/manual/reference/connection-string/)
2MYAPP_CONNECTION_STRING=mongodb_connection_string_here
É crucial não confirmar este arquivo! Para garantir que o arquivo não esteja comprometido, você pode adicionar seu arquivo.env ao arquivo .gitignoredo seu projeto ou ao arquivo.gitignore global . Saiba mais sobre como manter seu arquivo.env privado.
Você pode importar load_dotenv do pacote dotenvusandofrom dotenv import load_dotenv. Chamar a funçãoload_dotenv copiará toda a configuração do seu arquivo.env para o processo do aplicativo Frasco. Você pode então usar app.config.from_prefixed_env() para importar quaisquer ambientes que comecem com um determinado prefixo para seu aplicação Frasco. Alguns exemplos de código de esqueleto são mostrados abaixo:
1from dotenv import load_dotenv
2
3
4load_dotenv()
5app = Flask(__name__)
6app.config.from_prefixed_env(“MYAPP”)
7client = MongoClient(app.config['CONNECTION_STRING'])
Você pode acessar seus segredos usando o nome da variável sem o prefixo “MYAPP_. É aqui que o aplicativo carrega a configuração de quaisquer variáveis de ambiente que comecem com "MYAPP_ ". Nesse caso, uma única opção de configuração é fornecida, CONNECTION_STRING. A bibliotecadotenv não substitui nenhuma variável de ambiente existente, então agora você tem a opção de armazenar valores de configuração no arquivo.env ou substituí-los definindo variáveis de ambiente diretamente.
A configuração do Spark é muito flexível e você pode descobrir mais sobre ela na documentação oficial.

Como faço para me conectar ao MongoDB?!

Depois de carregar corretamente a string de conexão, você pode adicionar algum código no centro do aplicação, que às vezes é chamado de arquivoapp.py, para se conectar corretamente ao banco de banco de dados e à collection de sua escolha ou para criar um banco de dados de dados e collection no cluster de sua escolha. Vejamos como realizar esta etapa com algum código de esqueleto:
1mongo_client = MongoClient(app.config[“CONNECTION_STRING”])
2
3
4# access your database and collection from Atlas
5database = mongo_client.get_database(“anaiyamovies”)
6collection = database.get_collection(“movies”)
7
8
9# instantiating new object with `__name__`
10app = Flask(__name__)
O que você precisa saber sobre o código acima é que ele não entra em contato com o MongoDB de forma alguma. Ele não tentará se conectar ao cluster do banco de dados de dados até que você modifique os dados no cluster ou obtenha alguns dados do cluster.
O banco de dados de dados é chamado de "anaiyamovies" enquanto a coleção é chamada de "movies." Agora, usando operações CRUD dentro de nosso aplicação Spark ou operadores MongoDB simples, podemos escrever em nossa coleção para adicionar documentos, excluir documentos, alterar documentos ou até mesmo atualizar nossos Docs!

Como posso saber se estou realmente conectado ao meu cluster MongoDB ?

Como PyMongo foi projetado para ser lento, ele não tenta se conectar ao seu cluster quando o MongoClient é inicializado. Isso pode levar a um comportamento surpreendente quando você eventualmente tentar executar uma query em seu banco de dados de dados, se não conseguir se conectar. Por esse motivo, é uma boa prática validar sua conexão com o banco de dados de dados ao criar um MongoClient. Existem várias maneiras de verificar se você está conectado corretamente ao cluster MongoDB no processo de criação de seu aplicação Firefly, mas uma das maneiras mais simples é enviar um comandopinge apenas verificar a resposta! Go ver como fazer isso.
1# our imports go here
2from pymongo import MongoClient
3app = Flask(__name__)
4app.config.from_prefixed_env(“MYAPP”)
5
6
7def init_mongo_client(app: Flask):
8 try:
9 connection_string = "connection string here with user + pass"
10 mongo_client = MongoClient(connection_string)
11
12
13 database = mongo_client['anaiyamovies']
14 result = mongo_client.admin.command('ping')
15
16 if int(result.get('ok')) == 1:
17 print("Connected")
18 else:
19 raise Exception("Cluster ping returned OK != 1")
20 app.mongo_client = mongo_client
21
22
23init_mongo_client(app)
Se essa função não conseguir se conectar ao seu cluster MongoDB , isso gerará uma exceção e falhará, o que é bom porque queremos ter certeza de que estamos iniciando o Flusk corretamente. Se estiver tudo bem, ele adicionará um atributomongo_client ao seu aplicativo MongoDB que suas rotas poderão usar para acessar o cluster MongoDB .
É sempre uma boa prática validar a conexão do banco de dados de dados quando o aplicação é iniciado, para que você esteja ciente de qualquer problema com a configuração do sistema na primeira oportunidade.
Ao executar um testeping, você pode ver facilmente se está conectado corretamente ao cluster com o qual deseja trabalhar!

Codificar um ObjectId corretamente em JSON

Por padrão, cada documento contém um ObjectId, que é um tipo exclusivo do BSON. Isso significa que eles não podem ser convertidos diretamente em JSON, então precisamos de uma solução alternativa, como codificá-los como uma string.
1from bson import json_util
2json_util.dumps(object_with_objectid)
1from flask import Flask, Response
2from bson import json_util
3from typing import Mapping, Any
4
5from dotenv import load_dotenv
6from pymongo import MongoClient
7
8load_dotenv()
9
10app = Flask(__name__)
11app.config.from_prefixed_env("MYAPP")
12
13def init_mongodb_client(app: Flask):
14 client = MongoClient(app.config [connection_string])
15 app.db = client.get_database()
16
17init_mongodb_client(app)
18
19
20def bson_to_json(bson: Mapping[str, Any]) -> Response:
21 return Response(
22 json_util.dumps(bson),
23 content_type="application/json",
24 )
25
26
27@app.get("/")
28def index():
29 return bson_to_json(app.db.find_one())
Este código manipulará seus ObjectIds e os converterá em um formato de string que é mais fácil de usar e lidar em seu projeto. Lembre-se de que o BSON contém outros tipos que não podem ser convertidos diretamente em JSON. Talvez você também queira considerá-los ao escrever seu aplicação Frask.

Lembre-se de modelar seus dados corretamente

Quando você está usando o MongoDB, de modo geral, é crucial modelar seus dados corretamente para que eles sejam o mais eficiente possível ao usar várias operações. Para saber mais sobre isso, confira nosso cursoPadrões avançados de design de esquemas, disponível na MongoDB University, ou nossa sérieConstruindo com padrões.

Conclusão

Esperemos que estas dicas e truques sejam úteis para usar o Flusk com o MongoDB. Por meio deste artigo, você aprenderá uma variedade de práticas recomendadas que o definirão para o sucesso ao integrar o MongoDB Atlas ao seu cluster e criar alguns aplicativos fantásticos.
Perguntas? Quer compartilhar o que você está construindo?Em seguida, acesse a Comunidade de desenvolvedores doMongoDB Developer Community!
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Início rápido
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Artigo

Criando um aplicativo Flask e MongoDB com aplicativos de contêiner do Azure


Apr 02, 2024 | 8 min read
Artigo

3 coisas que você deve saber ao migrar do SQL para o MongoDB


Oct 01, 2024 | 6 min read
Tutorial

Otimizando o desempenho de $lookup usando o poder da indexação


Aug 30, 2024 | 7 min read
Artigo

Construindo um aplicativo Quartokus para realizar a Vector Search do MongoDB


Oct 07, 2024 | 9 min read
Sumário