Package: pymongodm
pymongodm=========pymongodm is a odm respecting pymongo functionality and addsfunctionality such as model validation.change your current orm by pymongodb.Before:.. figure:: http://i.imgur.com/8TTqJ9h.jpg:alt: ImgurImgurAfter:.. figure:: http://i.imgur.com/NDna9Wp.jpg:alt: ImgurImgurhttps://pypi.python.org/pypi/pymongodminstall-------::pip install pymongodmconnect db----------\`\`\`python import pymongodmpymongodm.connect('name\_db') \`\`\`or\`\`\`python import pymongodm import pymongodb = pymongo.MongoClient()['name\_db'] pymongodm.connect(db) \`\`\`use db------\`\`\`python import pymongodmpymongodm.connect('example\_db')# Identical to pymongo pymongodm.db.nice\_collection.insert({'name':'pepis'}) print(pymongodm.db.nice\_collection.find\_one()) \`\`\`use models!-----------In version 2.0.0 change schema validator to cerberus (http://python-cerberus.org)=================================================================================\`\`\`python import pymongodm pymongodm.connect("gstudio")from pymongodm.models import Baseclass User(Base): schema = {"name": {'type': 'string'}, "other":{'type': 'list', 'required': False}} # optional, default is class\_name+ s collection\_name = "random\_name"::def cut_name(self):return self.name[:3]insert======result = User({'name': 'pepito'}) print("id in db", result.\_id)convert dict to object Model============================a = User({'\_id': result.\_id, 'name': result.name}) b =User(result.getattrs()) # get attrs return only db attrs c =User(result.get\_clean()) # not return except arguments (exclude\_view )d = User.find\_one({'\_id': result.\_id}) # normal queryconvert result finds to model=============================results = pymongodm.db.users.find().model(User) # or results =User.collect.find().model(User) # or result = User(id) # or result =User.find()for result in results: print(result.\_id) print(result.name)print(result.cut\_name())Modify values=============results = pymongodm.db.users.find().model(User) for result in results:result.name = "Pymongodm\_%s" % result.name result.other = ["random","info"] result.update()Remove======result.remove()\`\`\`Models options~~~~~~~~~~~~~~use other collection^^^^^^^^^^^^^^^^^^^^by default the name of the collection is the name of the class + s. Itcan be changed with the following argument: collection ="encoding\_profiles"hidden arguments in returns^^^^^^^^^^^^^^^^^^^^^^^^^^^exclude\_view = ['name']Rewrite basic methods---------------------Only need declare identic name in your class.. code:: pythonclass User(Base):schema = {"name": {'type': 'string'},"other": {'type': 'list', 'required': False}}# optional, default is class_name + scollection_name = "random_name"def remove(self):print("uhm ...")Plugins=======create new Plugins------------------.. code:: pythonfrom pymongodm.models.plugins import Pluginclass new_schemaValidation(Plugin):def __check(self, query):print(query.fields)  # all valuesreturn {'success': False,'errors': {'example': 'yep'}}def pre_create(self, query):return self.__check(query)def pre_update(self, query):return self.__check(query)def post_create(self, query):passdef post_update(self, query):passuse new plugin--------------.. code:: pythonclass User(Base):plugins = [new_schemaValidation]schema = {"name": {'type': 'string'},"other": {'type': 'list', 'required': False}}-  2.0.3 (23-05-2017)-  add find() and find\_one()-  2.0.2 (24-03-2017)-  support unset-  2.0.1 (6-02-2017)-  Hack support ObjectId-  Fix minor bugs-  2.0.0 (29-12-2016)-  (!!) Changed validation system to cerberus(http://python-cerberus.org) check README.md-  1.0.8 (12-12-2016)-  Support insert id by create method-  1.0.7 (03-12-2016)-  Avoid recursive validation (inspect\_recursive=False)-  1.0.6 (10-11-2016)-  Fix .model in find method-  1.0.5 (05-10-2016)-  Fix remove item-  1.0.4 (29-9-2016)-  support custom\_id-  1.0.3 (28-9-2016)-  automatic creation1.0.2 (18-7-2016)=================-  add method insert()1.0.1 (12-7-2016)=================-  remove prints1.0.0 (12-7-2016)=================-  auto\_get = True-  disable automatic discover cache-  if you use auto\_get = False must make a .get() to get the data inthe class-  Add support Python 20.1.0 (11-7-2016)=================-  Add collect property0.0.5 (11-7-2016)=================-  fix require=False and value None0.0.4 (6-6-2016)================-  Update readme0.0.3 (6-6-2016)================-  Update readme-  Fix minor bugs0.0.2 (3-6-2016)================-  Fix pip install0.0.1 (3-6-2016)================-  Initial version