MongoDB
MongoDB is a popular open-source NoSQL database. NoSQL is a database technology to store and retrieve data which are not stored in database like the traditional tabular form of RDBMS. Scalability and superior performance are main beneifts of NoSQL databases over RDBMS. Mongodb uses JSON-style documents with dynamic schema to store data. Installation instructions of MongoDB will be found in it's documentation - Install MongoDB.
PyMongo
PyMongo is a Python distribution containing tools for working with MongoDB, and is the recommended way to work with MongoDB from Python. To install PyMongo execute the command in terminal:
$ sudo pip install pymongo
Creating a model
I am going to create student model which will be used to get, create, update, delete objects form database.
models.py
# -*- coding: utf-8 -*- import pymongo class Student(object): def __init__(self, registration, **kwargs): self._id = registration self.first_name = kwargs.get('first_name', '') self.last_name = kwargs.get('last_name', '') self.department = kwargs.get('department', '') self.session = kwargs.get('session', '') self.mobile = kwargs.get('mobile', '') def __str__(self): return self._id @staticmethod def get_db(dbname='student_db'): """ make database connection and return a database instance """ client = pymongo.MongoClient(host='localhost', port=27017) return client[dbname] @classmethod def get(cls, registration): """ get student by registration number """ db = Student.get_db() student_info = db.students.find_one({'_id': registration}, {'_id': 0}) if student_info: student = Student(registration=registration, **student_info) else: student = Student(registration=registration) db.connection.close() return student @classmethod def get_all(cls): """ get all students and return a list. for many student return a cursor instead. """ db = Student.get_db() students = list(db.students.find()) db.connection.close() return students def save(self): """ save() method will create or update a document based on the _id attribute. """ db = Student.get_db() db.students.save(self.__dict__) db.connection.close() @classmethod def remove_all(cls): """ remove all documents for the collection. """ db = Student.get_db() db.students.remove() students = list(db.students.find()) db.connection.close() return students def remove(self): """ remove a object from the collection. """ db = Student.get_db() db.students.remove(self._id) db.connection.close() return self._id
Now this model can be used for CRUD operations.
>>>from models import Student
>>>student = Student.get('2008331041')
>>>student.first_name = "Salman"
>>>student.last_name = "Wahed"
>>>student.save()
>>>Student.get_all()
[{u'_id': u'2008331041',
u'department': u'',
u'first_name': u'Salman',
u'last_name': u'Wahed',
u'mobile': u'',
u'session': u''}]
>>>Student.get_all()
[{u'_id': u'2008331041',
u'department': u'',
u'first_name': u'Salman',
u'last_name': u'Wahed',
u'mobile': u'',
u'session': u''}]
No comments :
Post a Comment