Data Science Academy - Python Fundamentos - Capítulo 6

Download: http://github.com/dsacademybr


In [1]:
# Versão da Linguagem Python
from platform import python_version
print('Versão da Linguagem Python Usada Neste Jupyter Notebook:', python_version())


Versão da Linguagem Python Usada Neste Jupyter Notebook: 3.7.6

Gravando Dados no MongoDB com PyMongo


In [ ]:
# Instala o pacote pymongo para conectar no banco de dados MongoDB
!pip install -q pymongo

In [1]:
# Importamos o MongoClient para conectar nossa aplicação ao MongoDB
from pymongo import MongoClient

In [2]:
# Estabelecemos a conexão ao Banco de Dados
conn = MongoClient('localhost', 27017)

In [3]:
type(conn)


Out[3]:
pymongo.mongo_client.MongoClient

In [4]:
# Uma única instância do MongoDB pode suportar diversos bancos de dados. 
# Vamos criar o banco de dados cadastrodb
db = conn.cadastrodb

In [5]:
type(db)


Out[5]:
pymongo.database.Database

In [6]:
# Uma coleção é um grupo de documentos armazenados no MongoDB 
# (relativamente parecido com o conceito de tabelas em bancos relacionais)
collection = db.cadastrodb

In [7]:
type(collection)


Out[7]:
pymongo.collection.Collection

Uma nota importante sobre coleções (e bancos de dados) no MongoDB é que eles são criados posteriormente - nenhum dos comandos acima executou efetivamente qualquer operação no servidor MongoDB. Coleções e bancos de dados são criados quando o primeiro documento é inserido.


In [8]:
import datetime

Dados no MongoDB são representados (e armazenados) usando documentos JSON (Java Script Object Notation). Com o PyMongo usamos dicionários para representar documentos.


In [9]:
post1 = {"codigo": "ID-9987725",
        "prod_name": "Geladeira",
        "marcas": ["brastemp", "consul", "elecrolux"],
        "data_cadastro": datetime.datetime.utcnow()}

In [10]:
type(post1)


Out[10]:
dict

In [11]:
collection = db.posts

In [12]:
post_id = collection.insert_one(post1)

In [13]:
post_id.inserted_id


Out[13]:
ObjectId('5ad94235b093151c3d578f32')

In [14]:
# Quando um documento é inserido uma chave especial, "_id", é adicionada 
# automaticamente se o documento ainda não contém uma chave "_id".
post_id


Out[14]:
<pymongo.results.InsertOneResult at 0x11176a448>

In [15]:
post2 = {"codigo": "ID-2209876",
        "prod_name": "Televisor",
        "marcas": ["samsung", "panasonic", "lg"],
        "data_cadastro": datetime.datetime.utcnow()}

In [16]:
collection = db.posts

In [17]:
post_id = collection.insert_one(post2).inserted_id

In [18]:
post_id


Out[18]:
ObjectId('5ad94238b093151c3d578f33')

In [19]:
collection.find_one({"prod_name": "Televisor"})


Out[19]:
{'_id': ObjectId('5ad94238b093151c3d578f33'),
 'codigo': 'ID-2209876',
 'data_cadastro': datetime.datetime(2018, 4, 20, 1, 28, 23, 551000),
 'marcas': ['samsung', 'panasonic', 'lg'],
 'prod_name': 'Televisor'}

In [20]:
# A função find() retorna um cursor e podemos então navegar pelos dados
for post in collection.find():
    print(post)


{'_id': ObjectId('5ad94235b093151c3d578f32'), 'codigo': 'ID-9987725', 'prod_name': 'Geladeira', 'marcas': ['brastemp', 'consul', 'elecrolux'], 'data_cadastro': datetime.datetime(2018, 4, 20, 1, 28, 19, 198000)}
{'_id': ObjectId('5ad94238b093151c3d578f33'), 'codigo': 'ID-2209876', 'prod_name': 'Televisor', 'marcas': ['samsung', 'panasonic', 'lg'], 'data_cadastro': datetime.datetime(2018, 4, 20, 1, 28, 23, 551000)}

In [21]:
# Verificando o nome do banco de dados
db.name


Out[21]:
'cadastrodb'

In [22]:
# Listando as coleções disponíveis
db.collection_names()


Out[22]:
['posts']

Fim

Obrigado - Data Science Academy - facebook.com/dsacademybr