{ "info": { "author": "Jordi Collell", "author_email": "jordic@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# AsyncOM\n\nAsync OM it's a super basic Object mapper based almost all on sqlalchemy\nORM layer.\n\nWe use the declarative extension for building the classes, and also,\nfactor instances of them on querys. (*Limited support)\n\nThere is still no support for relations.\n\nDepens on [encode/databases](https://github.com/encode/databases) dependency.\n\n\n## Motivation\n\nI don't like the asyncpgsa approach where they are just using,\nthe core layer, to build run the sqlgenerator. I like to build,\naround the declarative layer of sqlachemy, and later found that\nI can patch some of the methods on the session.query, to\nuse it's own sql generator, and turn async the query system.\n\nObject persistent is minimal, and needs some love.\n\n\n## Usage\n\n```python\n\nfrom sqlalchemy.ext.declarative import declarative_base\nimport sqlalchemy as sa\nfrom databases import DatabaseURL\n\nBase = declarative_base()\n\n\nclass OrmTest(Base):\n __tablename__ = 'orm_test'\n\n id = sa.Column(sa.Integer, primary_key=True)\n name = sa.Column(sa.String(100), index=True)\n value = sa.Column(sa.Text)\n\n# Instead of usign Database from databases, you can use:\ndb = OMDatabase(DatabaseURL('postgres://root@postgres:{port}/guillotina'))\n\n# instances of the object can be created with:\ntest = OrmTest(name='xx', value='yy')\nawait db.add(test)\n\nprint(test.id) # pk column is correct set\n\n# get an instance\nins = await db.query(OrmTest).get(1)\n\ntotal = await db.query(OrmTest).count()\nassert total == 1\n\n# remove it\nawait db.delete(ins)\n\n# filter them\nres = await db.query(OrmTest).filter(\n OrmTest.name.like('xx')).all()\n\n# Or just iterate over the results with a cursor:\nasync for row in db.query(OrmTest).filter(OrmTest.name.like('xx')):\n print(f'Row {row.name}: {row.value}')\n\n\n# There is basic support for table inheritance query OneToOne\n\n\n# Look at tests\n```\n\n\n\n\n## Changelog\n\n0.3.1\n-----\n\n- Be able to provide mapper_factory to `OMQuery`\n [vangheem]\n\n0.3.0\n---\n- Fix bug with om.delete an inherited objects\n\n0.2.3\n---\n- Fix boolean expr on adding prods.\n Allowing to add values with 0\n\n0.2.1\n---\n- Small fix when checking none on json fields arrays\n\n0.1.9\n----\n- Added Column default and onupdate on update and add\n (only for scalar values and callables)\n- Added small proxy prop on OMDatabaes, to raw asyncpg connection\n\n0.1.8\n---\n- Yaml data importer\n\n0.1.7\n----\n- Support adding basic inherited models\n\n0.1.6\n---\n- query should be an async iterator\n\n0.1.5\n---\n- Load inherited models.\n\n0.1.4\n----\n- query(Object).get should return None if not found\n\n0.1.3\n----\n- Fixes and improvements. Lay out basic API\n\n0.1.0 (2019-04-07)\n------------------\n\n* First release on PyPI.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/vinissimus/asyncom", "keywords": "asyncom", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "asyncom", "package_url": "https://pypi.org/project/asyncom/", "platform": "", "project_url": "https://pypi.org/project/asyncom/", "project_urls": { "Homepage": "https://github.com/vinissimus/asyncom" }, "release_url": "https://pypi.org/project/asyncom/0.3.1/", "requires_dist": null, "requires_python": "", "summary": "Small and partial Obejct mapper on top of sqlalchemy for async", "version": "0.3.1" }, "last_serial": 5732108, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "c00d519f3b8933e3ce6abedd5ab36096", "sha256": "b3257d41c1224689e7e4b926ff88984e4316cb5fdbb7bc4d83ee49b69f8e2d3b" }, "downloads": -1, "filename": "asyncom-0.1.1.tar.gz", "has_sig": false, "md5_digest": "c00d519f3b8933e3ce6abedd5ab36096", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9010, "upload_time": "2019-04-08T12:32:04", "url": "https://files.pythonhosted.org/packages/79/2d/389d1b6a25ad125df59e78e50b594b0423402abced95e12f2533e0b6a8b8/asyncom-0.1.1.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "2b3bf40bbe6e731dba2ce9577bd5ba57", "sha256": "491381fea094b4c0cd9623e035e076d0b6a0aae9060f0fec9b9751d7b92280cd" }, "downloads": -1, "filename": "asyncom-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2b3bf40bbe6e731dba2ce9577bd5ba57", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4586, "upload_time": "2019-04-10T04:29:49", "url": "https://files.pythonhosted.org/packages/e5/24/1c5c69299007801edcd09e795951420edd9439712fcee2436d6587f5506f/asyncom-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9af4bc16b1d3cb411c57eb4b3b8be7f1", "sha256": "f2c7e5592e7a0ba3afb341a8c84e60096ea87b7182add3f76a6a6f738720d2a9" }, "downloads": -1, "filename": "asyncom-0.1.3.tar.gz", "has_sig": false, "md5_digest": "9af4bc16b1d3cb411c57eb4b3b8be7f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9251, "upload_time": "2019-04-10T04:29:52", "url": "https://files.pythonhosted.org/packages/7c/7b/45aeaec3af2aaae39a06e7bb68463b861c785b240d2e7731583a54f2a58e/asyncom-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "bb50e4fd93a6ae02eb18a1dc6483a658", "sha256": "79112d6a57d8279adaf6331dbe2d2894de7181fdba2a84456e272781e5a547bc" }, "downloads": -1, "filename": "asyncom-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bb50e4fd93a6ae02eb18a1dc6483a658", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4622, "upload_time": "2019-04-10T06:10:11", "url": "https://files.pythonhosted.org/packages/3d/c7/8740de373efab052e07bcc94840a31e2426ab05678239108ab7599720c04/asyncom-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9dc7cd17e3869287d35019a0878f4a26", "sha256": "614736f20cb7258c1c909655e3b29c4537981b948598c8194e779a4d85ee44ae" }, "downloads": -1, "filename": "asyncom-0.1.4.tar.gz", "has_sig": false, "md5_digest": "9dc7cd17e3869287d35019a0878f4a26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9291, "upload_time": "2019-04-10T06:10:12", "url": "https://files.pythonhosted.org/packages/2e/d5/b7be45266103d90a675e685cec72c97e5b53ac36ff7dc614713e1c6f4882/asyncom-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "158da7671ff15bff4ba1f9927685f81e", "sha256": "4dc82467c043c976a9493098bcaae8c0dc668feac29f8193c5b4c08eede77e80" }, "downloads": -1, "filename": "asyncom-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "158da7671ff15bff4ba1f9927685f81e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4846, "upload_time": "2019-04-10T16:47:51", "url": "https://files.pythonhosted.org/packages/06/c5/29c694dbc1566bfd37206c5ea201d7e7dbd7557b1c5d5f28a283ec1a62ba/asyncom-0.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e0b2362f2bf30aa4585a57b44430da41", "sha256": "a152eb2ba3612f04b46e9e3acfbd05ae540965be64156b6e9fd6dc6019f68415" }, "downloads": -1, "filename": "asyncom-0.1.5.tar.gz", "has_sig": false, "md5_digest": "e0b2362f2bf30aa4585a57b44430da41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9466, "upload_time": "2019-04-10T16:47:52", "url": "https://files.pythonhosted.org/packages/f5/d5/15d8f6eaa62413911b3db1bc5642877e9170675089aa1ed36f51a2ad133b/asyncom-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "935b4b2a8b8c3d1054aa496662202af3", "sha256": "a5ea0aa378381f9492c34688afd9e68db84e4548408832e5361ac5ee6b01f2da" }, "downloads": -1, "filename": "asyncom-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "935b4b2a8b8c3d1054aa496662202af3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5211, "upload_time": "2019-04-12T14:50:19", "url": "https://files.pythonhosted.org/packages/9d/81/f6cde6850100e734058905492f81d97bf7c4c369de94a874a0777619d28e/asyncom-0.1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d205590e6bd2ad5a5366dfe767688c2f", "sha256": "9c9571d5d046b8c7e6404a984b96a332dad918b22c0e0e33f3d9aefa807aecf7" }, "downloads": -1, "filename": "asyncom-0.1.6.tar.gz", "has_sig": false, "md5_digest": "d205590e6bd2ad5a5366dfe767688c2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9983, "upload_time": "2019-04-12T14:50:21", "url": "https://files.pythonhosted.org/packages/86/b8/8e094b4b69e35fd166678d33f4f746bda19d03736bdba38f062e788cffa8/asyncom-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "7ae622e84fe31e1fa36c093d8a769c62", "sha256": "b548cd096a38172728da1d6622da7cd23527b9e8c0b4f50df428b9e7b09d6d12" }, "downloads": -1, "filename": "asyncom-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7ae622e84fe31e1fa36c093d8a769c62", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5386, "upload_time": "2019-04-14T06:13:17", "url": "https://files.pythonhosted.org/packages/f4/d3/ba4079ff3ad7c3954f359255887c3b77b72a9feee8bd84b9e2de43f73ee4/asyncom-0.1.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ff6ba608d7b5db57708adcb488c8aa6", "sha256": "bf0449ea28d188ebaeb33ae289e3ccc99f7795d8566c849788f46c64fcce2cc0" }, "downloads": -1, "filename": "asyncom-0.1.7.tar.gz", "has_sig": false, "md5_digest": "4ff6ba608d7b5db57708adcb488c8aa6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10166, "upload_time": "2019-04-14T06:13:19", "url": "https://files.pythonhosted.org/packages/b0/82/dfbec51a579b31acffb934b3e356b960995352eed681296b75057c772f30/asyncom-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "6a01b7526b1f8fed19e228d0a8197740", "sha256": "a69330e4abc952114a79037e4d654fac5ed3a60eaaf2162e1cb2341e1263379b" }, "downloads": -1, "filename": "asyncom-0.1.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6a01b7526b1f8fed19e228d0a8197740", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6008, "upload_time": "2019-04-16T10:56:14", "url": "https://files.pythonhosted.org/packages/a4/9f/7e9e2d52c610f68d9e2d31b7cdf2a59cff356af187bacbcf23b8f8a2a31e/asyncom-0.1.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28f84ea38596061c2f6fd0270e629ce3", "sha256": "1dbec2b33f3d77ac02b47d726c5c9f45dd23b8786080ee68a482cdfbc82e0e79" }, "downloads": -1, "filename": "asyncom-0.1.8.tar.gz", "has_sig": false, "md5_digest": "28f84ea38596061c2f6fd0270e629ce3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10573, "upload_time": "2019-04-16T10:56:16", "url": "https://files.pythonhosted.org/packages/ec/e1/e873588ac49f9d09c7f3c64336d9fbfe1d13e53d78bb6ec47a6724d1a9d4/asyncom-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "5eba934e32d7b1136fac0c076d561aed", "sha256": "56e8c94825aae0f59fa0832b0412018965eeb7c3ebc732644ca1e44d92aa6df2" }, "downloads": -1, "filename": "asyncom-0.1.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5eba934e32d7b1136fac0c076d561aed", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6318, "upload_time": "2019-04-26T09:55:08", "url": "https://files.pythonhosted.org/packages/7e/eb/633b6973bf083e860cdaec707f9904d7ec0a33cde9c3c1fe942aa64bac39/asyncom-0.1.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59100d2835267abb9768b6f9e6b21208", "sha256": "5e8b25341e33bd088cd2a3dcf9981e2b50cda8e45744f4f9d70842856202f044" }, "downloads": -1, "filename": "asyncom-0.1.9.tar.gz", "has_sig": false, "md5_digest": "59100d2835267abb9768b6f9e6b21208", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10854, "upload_time": "2019-04-26T09:55:10", "url": "https://files.pythonhosted.org/packages/54/32/84c45f7006490b6b763615d8ddd051422ea3d7fe4a7883a7d46d5ccf0494/asyncom-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "37d815304c2be437fa686314c1dd416b", "sha256": "6e5d00465a7afa8fdbeb491dfcb5a911bd3dcd7e59b1c814b6a5999b20347cb5" }, "downloads": -1, "filename": "asyncom-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "37d815304c2be437fa686314c1dd416b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6261, "upload_time": "2019-04-26T10:09:35", "url": "https://files.pythonhosted.org/packages/e7/f4/88b0761bf7cf785071eb966c7da2d4c43290375dfda0f8a969063e876a8d/asyncom-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6cc4bee7dc83597fd018d6fd099d0f06", "sha256": "9c19d7eb0e95d70643882d076d2fe803b5b3af09130f368571fc2c891ab6b5d3" }, "downloads": -1, "filename": "asyncom-0.2.0.tar.gz", "has_sig": false, "md5_digest": "6cc4bee7dc83597fd018d6fd099d0f06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10803, "upload_time": "2019-04-26T10:09:37", "url": "https://files.pythonhosted.org/packages/b9/11/466baf63262dc2f4551d97eba0d22541242e63e2ed2d14ee43af49457527/asyncom-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "1dfa72c9b489973b85088011b0a7f4e8", "sha256": "5b7ef72c68beced13561919d6dbd9a39caa69d9c902b15a5b0c3b68888ff317e" }, "downloads": -1, "filename": "asyncom-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1dfa72c9b489973b85088011b0a7f4e8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6291, "upload_time": "2019-05-20T23:21:52", "url": "https://files.pythonhosted.org/packages/2d/a4/b669b598c842b56fa938ebb7c97a992fa0404cdc71a6b94b13f69c4855c5/asyncom-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d77fef2bfbc5cc54df2690b166c60d43", "sha256": "1f7ec8ca26cc7beba0a59c6c781cf246c1d9f43e0f1730d495e807dd64c2f100" }, "downloads": -1, "filename": "asyncom-0.2.1.tar.gz", "has_sig": false, "md5_digest": "d77fef2bfbc5cc54df2690b166c60d43", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10837, "upload_time": "2019-05-20T23:21:55", "url": "https://files.pythonhosted.org/packages/7d/e7/1072f591918dbb0c2fc894b952d91b7d389c3890f25ecb590393cd647221/asyncom-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "2149d8814b62a4640e4a4da643560f6f", "sha256": "22fdd608bed24844316751d6cc6ed598ec17f78ad904785bb9f682057c864362" }, "downloads": -1, "filename": "asyncom-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2149d8814b62a4640e4a4da643560f6f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6308, "upload_time": "2019-05-20T23:30:58", "url": "https://files.pythonhosted.org/packages/41/2c/83e3d38e6577b96652824aaecd1311741b3dbc11efa85e99c779f48c2259/asyncom-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "714db7c8abd3394ffed7c5b13025f75f", "sha256": "911f1b67f0654fe7f56ccb08a6404c55feb80e8ce5c2236983a93566fd229afc" }, "downloads": -1, "filename": "asyncom-0.2.2.tar.gz", "has_sig": false, "md5_digest": "714db7c8abd3394ffed7c5b13025f75f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10846, "upload_time": "2019-05-20T23:31:00", "url": "https://files.pythonhosted.org/packages/68/ab/265f3ef0fb234af84a1d2742ba2a7097b214394ee57b9cc6e1b299b22832/asyncom-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "ad30805419af55e13bf7bcc0e6e87ce2", "sha256": "ebe14c4f11ecd1b2b7588b426c1badcf36cda240c856941ee5ea28500f1d92a6" }, "downloads": -1, "filename": "asyncom-0.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ad30805419af55e13bf7bcc0e6e87ce2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6346, "upload_time": "2019-05-22T10:40:28", "url": "https://files.pythonhosted.org/packages/ae/f6/2ffcbed525ae704abed75b9f681e46eca1a03a9864135c2be6c30cf79189/asyncom-0.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b634562c87d4465d32c645b22eb8daeb", "sha256": "61932702d9c9ce485b580ddb7b8899481eda4ae53a86ad988f6cbbc42a8a28ac" }, "downloads": -1, "filename": "asyncom-0.2.3.tar.gz", "has_sig": false, "md5_digest": "b634562c87d4465d32c645b22eb8daeb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10911, "upload_time": "2019-05-22T10:40:30", "url": "https://files.pythonhosted.org/packages/ec/06/9e3107b22a942e2517350e089186428e98ddcdefe5d2b2bf34ddd3cd3f84/asyncom-0.2.3.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "6030015a2c97623607e9b25632047e9e", "sha256": "35a1faea60780c57e8770f6c35f3e81ab113eda2d20f58596ce96ec4ceaa3322" }, "downloads": -1, "filename": "asyncom-0.2.6.tar.gz", "has_sig": false, "md5_digest": "6030015a2c97623607e9b25632047e9e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11192, "upload_time": "2019-06-06T16:21:21", "url": "https://files.pythonhosted.org/packages/e4/a6/4c1e80a4bd4ce5c9cb3724fe4fe0aded1586a619f829cdd9cf41ca5e28b6/asyncom-0.2.6.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "3703d85870414f18cc1227f6c134e460", "sha256": "663d8dc0156fab888ea6ae2265a570188bef33beed4d81a8e0cc938f01f68e2b" }, "downloads": -1, "filename": "asyncom-0.3.0.tar.gz", "has_sig": false, "md5_digest": "3703d85870414f18cc1227f6c134e460", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11190, "upload_time": "2019-06-06T16:22:19", "url": "https://files.pythonhosted.org/packages/38/a1/18c023a44668e3d6a5d7f35a6458920e4be452f8e0b55063cd08d23ace05/asyncom-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "c9af4afb1d3ae0e933d2bce263be2121", "sha256": "fbe0daf0ca72f24f21ae9e24f4b41485c53bee91bb9dddd724dc00e7b822b6a5" }, "downloads": -1, "filename": "asyncom-0.3.1.tar.gz", "has_sig": false, "md5_digest": "c9af4afb1d3ae0e933d2bce263be2121", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11192, "upload_time": "2019-08-26T17:23:33", "url": "https://files.pythonhosted.org/packages/60/84/24ed5bfbe21b1631a4b271ff876e754f02f882f558d394b98a8cfce9d867/asyncom-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c9af4afb1d3ae0e933d2bce263be2121", "sha256": "fbe0daf0ca72f24f21ae9e24f4b41485c53bee91bb9dddd724dc00e7b822b6a5" }, "downloads": -1, "filename": "asyncom-0.3.1.tar.gz", "has_sig": false, "md5_digest": "c9af4afb1d3ae0e933d2bce263be2121", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11192, "upload_time": "2019-08-26T17:23:33", "url": "https://files.pythonhosted.org/packages/60/84/24ed5bfbe21b1631a4b271ff876e754f02f882f558d394b98a8cfce9d867/asyncom-0.3.1.tar.gz" } ] }