PyMongo – Python para interagir com seu MongoDB
- Postado por Adriano Bonacin
- Categorias mongodb
- Data 03/02/2022
- Comentários 0 comentário
Vou falar um pouco de como podemos usar python para interagir com seu MongoDB. Python é uma linguagem versátil e, na minha opinião, fácil de aprender e compreender. Por isso vou usá-la para demonstrar alguns truques aqui no blog, mas que fique claro que não sou expert. Uma das vantagens de usar o python é você poder instalar novos pacotes, o que nos traz bastante flexibilidade. É o que vamos fazer com o PyMongo, um pacote que contém ferramentas para trabalhar com MongoDB.
Criando container com Python3
Não queremos muita dor de cabeça com instalação de python e afins. Vamos simplesmente subir um container com uma imagem de python e ser pronto. Vou usar a mesma rede que temos usado para não ter problemas de conexão.
abonacin@Adrianos-MacBook-Pro ~ % docker network ls
NETWORK ID NAME DRIVER SCOPE
043e9a912 bridge bridge local
b67232712 compose_yadaxnetwork bridge local
b6414df12 host host local
105f2ec12 none null local
abonacin@Adrianos-MacBook-Pro ~ % docker run -dt --name mypython -h mypython --network compose_yadaxnetwork python
c4d4305b269dfb43349c6320cebd1
abonacin@Adrianos-MacBook-Pro ~ % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c4d4305b269d python "python3" 3 seconds ago Up 2 seconds mypython
28402ec715ce centos:centos8 "/bin/bash" 5 days ago Up 5 days mymongo1
2ab51630546e centos:centos8 "/bin/bash" 2 weeks ago Up 5 days mymongo3
e1c4554b2c3a centos:centos8 "/bin/bash" 2 weeks ago Up 5 days mymongo2
abonacin@Adrianos-MacBook-Pro ~ % docker exec -it mypython /bin/bash
root@mypython:/# python
Python 3.10.2 (main, Jan 18 2022, 19:45:14) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Instalando pymongo
O gerenciador de pacotes do python é o pip, que já vem instalado na imagem que usamos. Vamos usá-lo para instalar o pymongo. Feito isso, já teremos tudo pronto para o uso.
root@mypython:/# pip install pymongo
Collecting pymongo
Downloading pymongo-4.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (460 kB)
|████████████████████████████████| 460 kB 4.5 MB/s
Installing collected packages: pymongo
Successfully installed pymongo-4.0.1
root@mypython:/#
Conectando no MongoDB
Precisamos conversar com mais detalhes sobre a connection string, mas por enquanto vou fazer de forma fácil. Vou adicionar as entradas dos ips/hosts no /etc/hosts para conseguirmos conectar usando o hostname.
root@mypython:/# echo "172.100.0.11 mymongo1" >> /etc/hosts
root@mypython:/# echo "172.100.0.12 mymongo2" >> /etc/hosts
root@mypython:/# echo "172.100.0.13 mymongo3" >> /etc/hosts
root@mypython:/# cat /etc/hosts | grep my
172.100.0.2 mypython
172.100.0.11 mymongo1
172.100.0.12 mymongo2
172.100.0.13 mymongo3
E então é só partir para a diversão.
>>> from pymongo import MongoClient
>>> client = MongoClient('mymongo1',
... username='yadaxRoot',
... password='MinhaSenha12#',
... authSource='admin',
... authMechanism='SCRAM-SHA-1')
>>>
>>> db = client.yadax
>>> db.list_collection_names()
['cars', 'cars2']
>>>
>>> db.cars.find_one()
{'_id': ObjectId('61fad9dc2a8d3513c49dfa8a'), 'marca': 'HONDA', 'modelo': 'CIVIC', 'ano_fabricacao': 2015, 'ano_modelo': 2016, 'cor': 'Prata', 'preco': 60000}
Conferindo as collection no nosso DB através do mongosh:
rsYadax0 [direct: primary] yadax> show collections
cars
cars2
Aí se você quiser se aprofundar no tema, há uma pagina com um tutorial bem legal aqui. Em seguida vamos usar o pymongo para falar de Tailable Cursor. Até lá.
Tag:mongodb