{ "info": { "author": "Center for Open Science", "author_email": "contact@centerforopenscience.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7" ], "description": "***********\nmodular-odm\n***********\n\n.. image:: https://badge.fury.io/py/modular-odm.png\n :target: http://badge.fury.io/py/modular-odm\n\n.. image:: https://travis-ci.org/CenterForOpenScience/modular-odm.png?branch=develop\n :target: https://travis-ci.org/CenterForOpenScience/modular-odm\n\nA database-agnostic Document-Object Mapper for Python.\n\n\nInstall\n=======\n\n.. code-block:: bash\n\n $ pip install modular-odm\n\n\nExample Usage with MongoDB\n==========================\n\nDefining Models\n---------------\n\n.. code-block:: python\n\n from modularodm import StoredObject, fields\n from modularodm.validators import MinLengthValidator, MaxLengthValidator\n\n class User(StoredObject):\n _meta = {\"optimistic\": True}\n _id = fields.StringField(primary=True, index=True)\n username = fields.StringField(required=True)\n password = fields.StringField(required=True, validate=[MinLengthValidator(8)])\n\n def __repr__(self):\n return \"\".format(self.username)\n\n class Comment(StoredObject):\n _meta = {\"optimistic\": True}\n _id = fields.StringField(primary=True, index=True)\n text = fields.StringField(validate=MaxLengthValidator(500))\n user = fields.ForeignField(\"User\", backref=\"comments\")\n\n def __repr__(self):\n return \"\".format(self.text)\n\n\nSetting the Storage Backend\n---------------------------\n\n.. code-block:: python\n\n from pymongo import MongoClient\n from modularodm import storage\n\n client = MongoClient()\n db = client['testdb']\n User.set_storage(storage.MongoStorage(db, collection=\"user\"))\n Comment.set_storage(storage.MongoStorage(db, collection=\"comment\"))\n\nCreating and Querying\n---------------------\n\n.. code-block:: python\n\n >>> from modularodm.query.querydialect import DefaultQueryDialect as Q\n >>> u = User(username=\"unladenswallow\", password=\"h0lygrai1\")\n >>> u.save()\n >>> comment = Comment(text=\"And now for something completely different.\", user=u)\n >>> comment2 = Comment(text=\"It's just a flesh wound.\", user=u)\n >>> comment.save()\n True\n >>> comment2.save()\n True\n >>> u = User.find_one(Q(\"username\", \"eq\", \"unladenswallow\"))\n >>> u.comment__comments\n [, ]\n >>> c = Comment.find(Q(\"text\", \"startswith\", \"And now\"))[0]\n >>> c.text\n 'And now for something completely different.'\n \nFor more information regarding querying syntax, please visit the related readthedocs page at .\n\nMigrations\n----------\n\nTODO\n\n\n*Full documentation coming soon.*\n\nDevelopment\n===========\n\nTests require `nose `_, `invoke `_, and MongoDB.\n\nInstalling MongoDB\n------------------\n\nIf you are on MacOSX with `homebrew `_, run\n\n.. code-block:: bash\n\n $ brew update\n $ brew install mongodb\n\nRunning Tests\n-------------\n\nTo start mongodb, run\n\n.. code-block:: bash\n\n $ invoke mongo\n\nRun all tests with\n\n.. code-block:: bash\n\n $ invoke test", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/CenterForOpenScience/modular-odm", "keywords": "odm,nosql,mongo,mongodb", "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "modular-odm", "package_url": "https://pypi.org/project/modular-odm/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/modular-odm/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/CenterForOpenScience/modular-odm" }, "release_url": "https://pypi.org/project/modular-odm/0.3.0/", "requires_dist": null, "requires_python": null, "summary": "A Pythonic Object Data Manager", "version": "0.3.0" }, "last_serial": 2231156, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "04f055d065f46e6f9eb633b06e306c38", "sha256": "9c9abd567d5147349c926433bd98bc2bda2f4786cb2a1e5c880b0ebbf902a633" }, "downloads": -1, "filename": "modular_odm-0.2-py2.7.egg", "has_sig": false, "md5_digest": "04f055d065f46e6f9eb633b06e306c38", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 83238, "upload_time": "2013-10-01T13:56:44", "url": "https://files.pythonhosted.org/packages/1a/8a/bc09cc274d4613a44387cd501a8271427d358b114e466ff120bbac0f2aa2/modular_odm-0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "8b42af5adcb5b403426423dfd9fc2ec7", "sha256": "b4f6160689fa436971a3af1b9ded4e617f53866f7ab6c823742fce4b71ee90a5" }, "downloads": -1, "filename": "modular-odm-0.2.tar.gz", "has_sig": false, "md5_digest": "8b42af5adcb5b403426423dfd9fc2ec7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22723, "upload_time": "2013-10-01T13:56:47", "url": "https://files.pythonhosted.org/packages/aa/4a/71242df141627d863c827cfff9f2e82d0ada70dfc5aefde5066394e536b2/modular-odm-0.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "4f7b7eca543a6016b72950ce94d85fe7", "sha256": "624db71ff7056934d7028239b62e858ff20f9b90d2ae08d6da363c86054dc80e" }, "downloads": -1, "filename": "modular_odm-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4f7b7eca543a6016b72950ce94d85fe7", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 41951, "upload_time": "2016-07-19T19:20:30", "url": "https://files.pythonhosted.org/packages/73/d3/f7a5946600a0923fea6a0a8251ba77efb8dcca5a69fb46a757f937b121dc/modular_odm-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2691e495f331b5a8181636928a3b8020", "sha256": "2c0dc303c638ea7bd78e6eaf329a727d0f9a53d4587d32b0930f32abce50fb7a" }, "downloads": -1, "filename": "modular-odm-0.3.0.tar.gz", "has_sig": false, "md5_digest": "2691e495f331b5a8181636928a3b8020", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30669, "upload_time": "2016-07-19T19:20:28", "url": "https://files.pythonhosted.org/packages/19/45/28fae0332525dccdca49edfc45bb6506020ee94a242cf34bcfa88d580943/modular-odm-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4f7b7eca543a6016b72950ce94d85fe7", "sha256": "624db71ff7056934d7028239b62e858ff20f9b90d2ae08d6da363c86054dc80e" }, "downloads": -1, "filename": "modular_odm-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4f7b7eca543a6016b72950ce94d85fe7", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 41951, "upload_time": "2016-07-19T19:20:30", "url": "https://files.pythonhosted.org/packages/73/d3/f7a5946600a0923fea6a0a8251ba77efb8dcca5a69fb46a757f937b121dc/modular_odm-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2691e495f331b5a8181636928a3b8020", "sha256": "2c0dc303c638ea7bd78e6eaf329a727d0f9a53d4587d32b0930f32abce50fb7a" }, "downloads": -1, "filename": "modular-odm-0.3.0.tar.gz", "has_sig": false, "md5_digest": "2691e495f331b5a8181636928a3b8020", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30669, "upload_time": "2016-07-19T19:20:28", "url": "https://files.pythonhosted.org/packages/19/45/28fae0332525dccdca49edfc45bb6506020ee94a242cf34bcfa88d580943/modular-odm-0.3.0.tar.gz" } ] }