Pós-Graduação: Especialização em Data Science & Big Data

Pontifícia Universidade Católica de Minas Gerais (PUC-MG)

Victor Hugo Negrisoli - Bancos de Dados Relacionais e Não Relacionais

Integração de banco de dados em documento MongoDB com Python utilizando a biblioteca PyMongo
In [63]:
import pymongo
import datetime
import json
from bson.objectid import ObjectId
In [7]:
host = 'localhost'
port = 27017
client = pymongo.MongoClient(host, port)
db = client.pos
In [22]:
albuns = db.albuns.find()

for album in albuns:
    print(album)
{'_id': ObjectId('5e8668b10f0bcdb52e58def8'), 'nome': 'MasterofPuppets', 'dataLancamento': datetime.datetime(1986, 3, 3, 3, 0), 'duracao': 3286.0, 'produtor': 'Zack Snyder', 'artista_id': '1'}
{'_id': ObjectId('5e8668be0f0bcdb52e58def9'), 'nome': '...And Justice for All', 'dataLancamento': datetime.datetime(1988, 8, 25, 3, 0), 'duracao': 3929.0, 'artista_id': '1'}
{'_id': ObjectId('5e8668c40f0bcdb52e58defa'), 'nome': 'AmongtheLiving', 'produtor': 'Eddie Kramer', 'artista_id': '4'}
{'_id': ObjectId('5e8669880f0bcdb52e58defb'), 'nome': 'Nevermind', 'artista': 'Nirvana', 'estudioGravacao': ['SoundCityStudios', 'SmartStudios(Madison)'], 'dataLancamento': datetime.datetime(1992, 1, 11, 3, 0), 'artista_id': '6'}
{'_id': ObjectId('5e86698e0f0bcdb52e58defc'), 'nome': 'ReigninBlood', 'dataLancamento': datetime.datetime(1986, 10, 7, 3, 0), 'artista': 'Larry Carroll', 'duracao': 1738.0, 'artista_id': '3'}
{'_id': ObjectId('5e8669930f0bcdb52e58defd'), 'nome': 'Seventh Son of a Seventh Son', 'artista': 'Iron Maiden', 'produtor': 'Martin Birch', 'estudioGravacao': 'MusiclandStudios', 'dataLancamento': datetime.datetime(1988, 4, 11, 3, 0)}
In [24]:
for album in db.albuns.find():
    print(album["nome"])

query_criteria = db.albuns.find({"nome": "MasterofPuppets"})
print(query_criteria)
MasterofPuppets
...And Justice for All
AmongtheLiving
Nevermind
ReigninBlood
Seventh Son of a Seventh Son
<pymongo.cursor.Cursor object at 0x0000016893427908>
In [28]:
db.albuns.insert_one ({
    'nome': 'AC DC',
    'dataLancamento': datetime.datetime(2005, 1, 1, 1, 1),
    'artista_id': '1'
})
Out[28]:
<pymongo.results.InsertOneResult at 0x16894419788>
In [34]:
print(db.albuns.find({'nome': 'AC DC'}))
<pymongo.cursor.Cursor object at 0x0000016894B640C8>
In [45]:
json_string = '''
                {
                    "nome" : "Somewhere Far Beyond",
                    "dataLancamento" : "1992-05-30", 
                    "duracao" : "3328",
                    "artista" : {
                    "nome" : "BlindGuardian"
                }}
              '''
In [46]:
json_obj = json.loads(json_string)
In [47]:
print(json_obj)
{'nome': 'Somewhere Far Beyond', 'dataLancamento': '1992-05-30', 'duracao': '3328', 'artista': {'nome': 'BlindGuardian'}}
In [48]:
db.albuns.insert_one(json_obj)
Out[48]:
<pymongo.results.InsertOneResult at 0x16894b7e9c8>
In [54]:
for album in db.albuns.find():
    print(album)
    print('\n')
{'_id': ObjectId('5e8668b10f0bcdb52e58def8'), 'nome': 'MasterofPuppets', 'dataLancamento': datetime.datetime(1986, 3, 3, 3, 0), 'duracao': 3286.0, 'produtor': 'Zack Snyder', 'artista_id': '1'}


{'_id': ObjectId('5e8668be0f0bcdb52e58def9'), 'nome': '...And Justice for All', 'dataLancamento': datetime.datetime(1988, 8, 25, 3, 0), 'duracao': 3929.0, 'artista_id': '1'}


{'_id': ObjectId('5e8668c40f0bcdb52e58defa'), 'nome': 'AmongtheLiving', 'produtor': 'Eddie Kramer', 'artista_id': '4'}


{'_id': ObjectId('5e8669880f0bcdb52e58defb'), 'nome': 'Nevermind', 'artista': 'Nirvana', 'estudioGravacao': ['SoundCityStudios', 'SmartStudios(Madison)'], 'dataLancamento': datetime.datetime(1992, 1, 11, 3, 0), 'artista_id': '6'}


{'_id': ObjectId('5e86698e0f0bcdb52e58defc'), 'nome': 'ReigninBlood', 'dataLancamento': datetime.datetime(1986, 10, 7, 3, 0), 'artista': 'Larry Carroll', 'duracao': 1738.0, 'artista_id': '3'}


{'_id': ObjectId('5e8669930f0bcdb52e58defd'), 'nome': 'Seventh Son of a Seventh Son', 'artista': 'Iron Maiden', 'produtor': 'Martin Birch', 'estudioGravacao': 'MusiclandStudios', 'dataLancamento': datetime.datetime(1988, 4, 11, 3, 0)}


{'_id': ObjectId('5e867252c1f628949c75975a'), 'nome': 'AC DC', 'dataLancamento': datetime.datetime(2005, 1, 1, 1, 1), 'artista_id': '1'}


{'_id': ObjectId('5e86725cc1f628949c75975b'), 'nome': 'AC DC', 'dataLancamento': datetime.datetime(2005, 1, 1, 1, 1), 'artista_id': '1'}


{'_id': ObjectId('5e86735fc1f628949c75975c'), 'nome': 'Somewhere Far Beyond', 'dataLancamento': '1992-05-30', 'duracao': '3328', 'artista': {'nome': 'BlindGuardian'}}


In [55]:
db.albuns.delete_one({'_id': '5e86725cc1f628949c75975b'})
Out[55]:
<pymongo.results.DeleteResult at 0x16894b20ec8>
In [58]:
print(db.albuns.find_one({'_id': '5e86725cc1f628949c75975b'}))
None
In [75]:
album = db.albuns.find_one({'nome': 'AC DC'})
print(album)
{'_id': ObjectId('5e867252c1f628949c75975a'), 'nome': 'AC DC', 'dataLancamento': datetime.datetime(2005, 1, 1, 1, 1), 'artista_id': '1'}
In [73]:
album_by_id = db.albuns.find_one({'_id': ObjectId('5e86725cc1f628949c75975b')})
print(album_by_id)
{'_id': ObjectId('5e86725cc1f628949c75975b'), 'nome': 'AC DC', 'dataLancamento': datetime.datetime(2005, 1, 1, 1, 1), 'artista_id': '1'}
In [76]:
album_by_id_2 = db.albuns.find_one({'_id': ObjectId('5e86735fc1f628949c75975c')})
print(album_by_id_2['artista']['nome'])
BlindGuardian