2016 m. liepos 5 d., antradienis

Kaip paruošti mongoDB su python3?

Diegsime mongoDB python3.X versijai :

pip install diegia mongoDB python2.X versijai.
sudo pip install pymongo

todėl reikia atsisiųsti python3-pip paketą
sudo apt-get install python3-pip

dabar galim diegti mongoDB python3.X versijai
sudo pip3 install pymongo

Jei mėginant pridėti įrašą meta klaidą, nes nepaleistas mongodb servisas
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused

mongoDB serviso paleidimas:
systemctl start mongodb.service
/etc/init.d/mongodb start

mongoDB logai:
tail -f /var/log/mongodb

Pavyzdys:

>>> import pymongo

>>> client = pymongo.MongoClient() #arba 
>>> client = MongoClient('mongodb://localhost:27017' )

>>> db = client.test #arba db = client['test']

Įrašymas:
>>> db.sites.insert({"url":"http://technologijos.lt", "name":"Anonimas"}) # į sites collection įrašomas įrašas

Užklausos:
>>> db.sites.find_one() #Vieno įrašo atvaizdavimas
{'url': 'http://technologijos.lt', '_id': ObjectId('577b550e8624ed65e8985496'),#Sukurtas unikalus objekto identifikatorius.
'name': 'Anonimas'}
>>> list(db.sites.find({'name':'Anonimas'})) #Visų įrašų atvaizdavimas pagal atributus
>>> db.sites.count() #Visų elementu kiekis



Vaizdas iš mongo duomenų bazės:
$ mongo

> show databases #kitam terminale "db" tikrinimas
admin      (empty)
local      0.078GB
sinonimai  0.078GB
test       0.078GB

> use test #pasirenkamas duomenų bazės pavadinimas
switched to db test
> show collections
sites
system.indexes

> db.sites.find() #atvaizduoja visus db įrašus
{ "_id" : ObjectId("57c9737a8624ed5d57b51e78"), "url" : "http://technologijos.lt", "name" : "Anonimas" }
{ "_id" : ObjectId("57caa9bb8624ed1b31495971"), "url" : "http://technologijos.lt", "name" : "Anonimas" }


Paieška iš duomenų bazės:
>>> db.sites.find_one()["url"]
'http://technologijos.lt'

Literatūra:
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/ - mongoDB ubuntu diegimas
http://api.mongodb.com/python/current/tutorial.html - komandos
http://blog.pythonisito.com/2012/01/moving-along-with-pymongo.html - darbas su db.