{ "info": { "author": "Christo Crampton", "author_email": "info@38.co.za", "bugtrack_url": null, "classifiers": [ "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# PG NoSQL\n\nUsing Postgres as a NoSQL database. Intended for providing a shared storage space between different django projects\n\n**Installation**\n\n[![PyPI version](https://badge.fury.io/py/dj-pgnosql.svg)](https://badge.fury.io/py/dj-pgnosql)\n\n```\npip install dj-pgnosql\n```\n\nNote: this package doesn't specify any requirements, but assumes that your project is setup to use Postgres with a version of Django that supports `JSONField`\n\n* Add `pgnosql` to `INSTALLED_APPS` in settings.py\n\n## Recommended usage (with a custom database)\n\nWe recommend that you configure pgnosql to use a different database from your project's default database.\n\nThe idea is that you might have multiple django projects which connect to this KV store as a means to easily share data between services\n\n### Configure a seperate database connection:\n\n**settings.py**\n\n```python\nDATABASES = {\n 'default': {\n 'ENGINE': 'django.db.backends.postgresql_psycopg2',\n 'NAME': os.environ.get('DATABASE_NAME', 'postgres'),\n 'USER': os.environ.get('DATABASE_USER', 'postgres'),\n 'HOST': os.environ.get('DATABASE_HOST', 'postgres'),\n 'PORT': 5432,\n },\n 'pgnosql': { # <- this is our nosql db\n 'ENGINE': 'django.db.backends.postgresql_psycopg2',\n 'NAME': os.environ.get('NOSQL_DATABASE_NAME', 'postgres'),\n 'USER': os.environ.get('NOSQL_DATABASE_USER', 'postgres'),\n 'HOST': os.environ.get('DATABASE_HOST', 'postgres'),\n 'PORT': 5432,\n }\n}\n```\n\n**Add the DB router**\n\n```python\nDATABASE_ROUTERS = ['pgnosql.routers.NoSQLRouter']\n```\n\nThis router will send queries to the NoSQL database if the model is from the `pgnosql` app. Otherwise will send it to the default database\n\n**Run migrations:**\n\nYou'll need to specify that you're running them for the `pgnosql` database.\n\n```bash\nweb python manage.py migrate pgnosql --database=pgnosql\n```\n\nYou're all setup.\n\n![Shared access between two services](https://s3.eu-central-1.amazonaws.com/dropbox-appointmentguru/pg-nosql.png)\n\n## Usage\n\n```python\nfrom pgnosql.models import KV\nkey = \"foo\"\nvalue = {\"bar\": \"bus\"}\n\nKV.set(key, value) # value must be json\nKV.get(key) # {\"bar\": \"bus\"}\nKV.delete()\n```\n\nYou can obviously also just use Django's standard ORM\n\n**Model fields:**\n\n```python\nkey = models.CharField(max_length=100, db_index=True)\nvalue = JSONField(default=dict)\nindex = models.CharField(max_length=255, db_index=True, help_text='You can provide an index to make this key searchable')\n\ntime_to_live = models.PositiveIntegerField(default=0)\ncreated_date = models.DateTimeField(auto_now_add=True)\nmodified_date = models.DateTimeField(auto_now=True)\n```\n\n## Sub-modules\n\n> `dj=pgnosql` supplies a few sub-modules for dealing with Specific use-cases\n\n### GlobalUser\n\n> A shared user object\n\n```python\n# Get a user\nfrom pgnosql.user import GlobalUser\nuser_id = 1\nuser = GlobalUser(user_id)\n\n# set arbitary data on a user:\nuser_data = {\"foo\": \"bar\"}\nuser.set(user_data)\nuser.get()\n>> {\"foo\": \"bar\"}\n\n```\n\n### Feed\n\nTBD\n\n### Metrics\n\nTBD\n\n### Notes on versioning:\n\n```\nx.y.z\n| | |__ Patch\n| |____ Minor\n|______ Major\n```\n\n* Patch: tweaks, improvements and bug fixes - backward compatible. Inclides new functionality in the API interface - but not changes to to it\n* Minor: Changes to the existing API interface\n* Major: Changes to db schema/Django models\n\n\n## Development\n\n### Testing\n\n#### With docker (recommended)\n\n```\ndocker-compose run --rm web python manage.py test\n```\n\n\n### Generate Spec Docs:\n\n```\ndocker-compose run --rm web python manage.py test --testrunner=testreporter.runner.BDDTestRunner\n```\n\nSee `spec.txt`\n\n\n## FAQ\n\n### Why not use something like Redis or Mongo?\n\nOur main motivation for building this library is due to the strong support for Postgres in Django. In most cases - if you're already using Django - you'll be able to use this library with no extra dependencies.\n\nYou also get all of Django's built in support for Postgress including:\n\n* Easy to test\n* Configuration baked in\n* You're probably already using Postgres for your normal models. Now you don't need to add another piece of machinery\n* Django Admin support\n* Django ORM support\n* ...", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/schoolorchestration/libs/dj-pgnosql", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "dj-pgnosql", "package_url": "https://pypi.org/project/dj-pgnosql/", "platform": "", "project_url": "https://pypi.org/project/dj-pgnosql/", "project_urls": { "Homepage": "https://gitlab.com/schoolorchestration/libs/dj-pgnosql" }, "release_url": "https://pypi.org/project/dj-pgnosql/1.0.0/", "requires_dist": null, "requires_python": "", "summary": "", "version": "1.0.0" }, "last_serial": 5739284, "releases": { "0.0.3": [ { "comment_text": "", "digests": { "md5": "6dbe431eba114bb1a23b8ae3bd4fb232", "sha256": "f7e0774e8c023410efeb520b6d2dbb94c26f0959239846035364f8a508665097" }, "downloads": -1, "filename": "dj-pgnosql-0.0.3.tar.gz", "has_sig": false, "md5_digest": "6dbe431eba114bb1a23b8ae3bd4fb232", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3503, "upload_time": "2019-05-05T01:55:20", "url": "https://files.pythonhosted.org/packages/5c/a0/157aa9817a92063a6d0aa0bf94c8817ff68c84917cd1eafecbbb232f55a0/dj-pgnosql-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "e47010f50b55fd9ff9d7fccf9e8b6f88", "sha256": "af00d1ff9c87728bc98887f519427d926934476ad16fafa86b5033206f508cc6" }, "downloads": -1, "filename": "dj-pgnosql-0.0.4.tar.gz", "has_sig": false, "md5_digest": "e47010f50b55fd9ff9d7fccf9e8b6f88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3751, "upload_time": "2019-05-06T15:33:11", "url": "https://files.pythonhosted.org/packages/53/f3/1d253744622850e2600e777ae7f52ea24c9e0cefda3a92250587d7831a50/dj-pgnosql-0.0.4.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "05f498b5703be98f9b425ce6ca2ce1a3", "sha256": "2238e3020753a3388934a3884148f9f8027112fea7112bdbdcbd0e78b974be85" }, "downloads": -1, "filename": "dj-pgnosql-0.1.0.tar.gz", "has_sig": false, "md5_digest": "05f498b5703be98f9b425ce6ca2ce1a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6815, "upload_time": "2019-05-15T16:08:46", "url": "https://files.pythonhosted.org/packages/05/b4/e1bed51c858c0bb700661e1e9f09a461482d171d0bb034cb0381c46c86b6/dj-pgnosql-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "43c8c6fae5da3afeab1f1ddfa7386695", "sha256": "a6d8e6ec920b1331d937c78c93963274bf321d673ff74d2ae2463cb5f133cbbf" }, "downloads": -1, "filename": "dj-pgnosql-0.2.0.tar.gz", "has_sig": false, "md5_digest": "43c8c6fae5da3afeab1f1ddfa7386695", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7482, "upload_time": "2019-07-11T20:36:55", "url": "https://files.pythonhosted.org/packages/23/33/b6f1d5b412a3dec29c8ac6b20465dce6de373ce6c7131441ea25e6089ffa/dj-pgnosql-0.2.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "78393ce378e06a17f67a0cf5d0a4e170", "sha256": "7c36da2a4c731b2e8997cbb87cb7d3bd282763a20071a82c8d270df5a4c958b2" }, "downloads": -1, "filename": "dj-pgnosql-1.0.0.tar.gz", "has_sig": false, "md5_digest": "78393ce378e06a17f67a0cf5d0a4e170", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7781, "upload_time": "2019-08-27T20:01:37", "url": "https://files.pythonhosted.org/packages/19/8a/ad1ab1de6e7e391b6ff16ecd1e954a0442fefa4a8d57554deb53dc8d731c/dj-pgnosql-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "78393ce378e06a17f67a0cf5d0a4e170", "sha256": "7c36da2a4c731b2e8997cbb87cb7d3bd282763a20071a82c8d270df5a4c958b2" }, "downloads": -1, "filename": "dj-pgnosql-1.0.0.tar.gz", "has_sig": false, "md5_digest": "78393ce378e06a17f67a0cf5d0a4e170", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7781, "upload_time": "2019-08-27T20:01:37", "url": "https://files.pythonhosted.org/packages/19/8a/ad1ab1de6e7e391b6ff16ecd1e954a0442fefa4a8d57554deb53dc8d731c/dj-pgnosql-1.0.0.tar.gz" } ] }