{ "info": { "author": "Wargaming Team", "author_email": "", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# Asynchronous SQLAlchemy Object Relational Mapper.\n\nThis is an ORM for accessing SQLAlchemy using asyncio. Working on top of SQLAlchemy Core.\n\nIt presents a method of associating user-defined Python classes with database tables, and instances of those classes (objects) with rows in their corresponding tables.\n\n## Usage\n\nInitialization:\n \n from sqlalchemy import MetaData, Integer, String, DateTime\n from aiopg.sa import create_engine\n from aiosqlalchemy_miniorm import RowModel, RowModelDeclarativeMeta, BaseModelManager\n \n metadata = MetaData()\n BaseModel = declarative_base(metadata=metadata, cls=RowModel, metaclass=RowModelDeclarativeMeta) \n \n async def setup():\n metadata.bind = await create_engine(**database_settings)\n \n class MyEntityManager(BaseModelManager):\n async def get_with_products(self):\n return await self.get_items(where_list=[(MyEntity.c.num_products > 0)])\n \n class MyEntity(BaseModel):\n __tablename__ = 'my_entity'\n __model_manager_class__ = MyEntityManager\n \n id = Column(Integer, primary_key=True)\n name = Column(String(100), nullable=False)\n num_products = Column(Integer)\n created_at = Column(DateTime(), server_default=text('now()'), nullable=False)\n \nQuery:\n \n objects = await MyEntity.objects.get_instances(\n where_list=[(MyEntity.c.name == 'foo')],\n order_by=['name', '-num_products']\n )\n \n num_objects = await MyEntity.objects.count(\n where_list=[(MyEntity.c.name == 'foo'), (MyEntity.c.num_products > 3)]\n )\n\nor (low-level):\n \n objects = await MyEntity.objects \\\n .set_sql(MyEntity.table.select()) \\\n .where([(MyEntity.c.name == 'foo')]) \\\n .limit(10) \\\n .fetchall()\n \nManagement:\n \n record = await MyEntity.objects.insert(\n name='bar',\n num_products=0,\n )\n \n await record.update(name='baz')\n await record.delete()\n\n\nTransactions:\n\n async with MyEntity.objects.transaction() as my_entity_objects:\n await my_entity_objects.insert(name='bar', num_products=0)\n await my_entity_objects.delete([(MyEntity.c.name == 'foo')])", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "aiosqlalchemy-miniorm", "package_url": "https://pypi.org/project/aiosqlalchemy-miniorm/", "platform": "", "project_url": "https://pypi.org/project/aiosqlalchemy-miniorm/", "project_urls": null, "release_url": "https://pypi.org/project/aiosqlalchemy-miniorm/0.2.13/", "requires_dist": null, "requires_python": "", "summary": "", "version": "0.2.13" }, "last_serial": 3583823, "releases": { "0.2.13": [ { "comment_text": "", "digests": { "md5": "0cd340f58dd28cc1bd0d49b29d2b1226", "sha256": "ba7ea5c95b80dd3d09f566c40524ec85c04c50c0786462fd8d6a5658a579707a" }, "downloads": -1, "filename": "aiosqlalchemy_miniorm-0.2.13.tar.gz", "has_sig": false, "md5_digest": "0cd340f58dd28cc1bd0d49b29d2b1226", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4741, "upload_time": "2018-02-15T09:44:03", "url": "https://files.pythonhosted.org/packages/ed/6d/6124f41776fca48233fd35f6d55758a301fc9833dbb3b170258d83dfa5b9/aiosqlalchemy_miniorm-0.2.13.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0cd340f58dd28cc1bd0d49b29d2b1226", "sha256": "ba7ea5c95b80dd3d09f566c40524ec85c04c50c0786462fd8d6a5658a579707a" }, "downloads": -1, "filename": "aiosqlalchemy_miniorm-0.2.13.tar.gz", "has_sig": false, "md5_digest": "0cd340f58dd28cc1bd0d49b29d2b1226", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4741, "upload_time": "2018-02-15T09:44:03", "url": "https://files.pythonhosted.org/packages/ed/6d/6124f41776fca48233fd35f6d55758a301fc9833dbb3b170258d83dfa5b9/aiosqlalchemy_miniorm-0.2.13.tar.gz" } ] }