{ "info": { "author": "podhmo", "author_email": "UNKNOWN", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Programming Language :: Python :: 3" ], "description": "sqlaqb\n========================================\n\n* utility for portable model definition with sqlalchemy\n* black magic? of cource.\n\nwhat is portable model definition?\n----------------------------------------\n\nsqlalchemy, it is ok that just definition declarative model class depends on another model.\n(e.g. We have two model, Group and User. User depends on Group Model.)\n\nBut,when providing model classes like these as a library, we are thinking about portability.\n\n* Library User: creating Operator model depends on User. but User class is provided by Library.\n* Library Author: We have convinient User Model, so, share it.\n* (Both of Two): but's what tablename is this Model?(e.g. User,user,users,mylib_users?)\n\nThis package's motibation is solving such a problem like above.\n\nHow to use this?\n----------------------------------------\n\nLibrary Author code::\n\n #foo/auth.py\n import sqlalchemy as sa\n from sqlalchemy.orm import relationship\n from sqlaqb import (\n ModelCreation, \n ModuleProvider, \n ModelSeed, \n with_tablename, \n with_modelname, \n )\n\n creation = ModelCreation()\n _provider = ModuleProvider(creation)\n create_models = _provider\n\n @creation.register(\"Group\")\n class Group(ModelSeed):\n id=sa.Column(sa.Integer, primary_key=True, nullable=False)\n name=sa.Column(sa.String(255), nullable=False)\n\n @creation.register(\"User\", depends=[\"Group\"])\n class User(ModelSeed):\n id=sa.Column(sa.Integer, primary_key=True, nullable=False)\n name=sa.Column(sa.String(255), nullable=False)\n\n @with_tablename(\"Group\")\n def group_id(cls, group_table_name):\n return sa.Column(sa.Integer, sa.ForeignKey(\"{}.id\".format(group_table_name)), nullable=True)\n\n @with_modelname(\"Group\")\n def group(cls, name):\n return relationship(name)\n\n def verify_password(self, password):\n return self.password_digest == password\n\nLibrary User can decide table name provided by library. \n\nLibrary User code::\n\n from foo.auth import create_models\n from sqlalchemy.ext.declarative import declarative_base\n\n Base = declarative_base() \n contract = {\"User\": {\"table_name\": \"users\"}, \n \"Group\": {\"table_name\": \"groups\", \"model_name\": \"_Group\"}}\n models = create_models(Base, contract)\n\n models._Group # Group model defined in foo.auth.py\n models.User # User model defined in foo.auth.py\n\nmore over, also enable to inject dependents model.\n\nLibrary User code::\n\n from foo.auth import create_models\n from sqlalchemy.ext.declarative import declarative_base\n\n Base = declarative_base()\n class MyGroup(Base):\n id = sa.Column(sa.Integer, primary_key=True, nullable=False)\n special = sa.Column(sa.String(\"32\"), doc=\"this is special\")\n __tablename__ = \"my_groups\"\n\n contract = {\"User\": {\"table_name\": \"users\"}, \n \"Group\": {\"model\": MyGroup}}\n\n models = create_models(Base, contract)\n\n models.Group # Group model define by library user\n models.User # User model defined in foo.auth.py\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "sqlaqb", "package_url": "https://pypi.org/project/sqlaqb/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/sqlaqb/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/sqlaqb/0.0.1/", "requires_dist": null, "requires_python": null, "summary": "utility for portable model definition of sqlalchemy models", "version": "0.0.1" }, "last_serial": 1065209, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "b751f1c3ea5479cbddc215ba1cabfdf8", "sha256": "abb319ec6128dcf8105823060d71274e4a5e9f67bf54f6cb8050e4130ae57942" }, "downloads": -1, "filename": "sqlaqb-0.0.0.tar.gz", "has_sig": false, "md5_digest": "b751f1c3ea5479cbddc215ba1cabfdf8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5118, "upload_time": "2014-04-19T07:17:53", "url": "https://files.pythonhosted.org/packages/c4/2f/19df311756e9086689741171ebc6153be7c7f75cfdc6b2f0099e91453905/sqlaqb-0.0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "787deec329287e59b9d5c201621c20e3", "sha256": "34081a0ef5c7e8cd16136193b9f3b9020a188dc6eb4da654de36221174be1f82" }, "downloads": -1, "filename": "sqlaqb-0.0.1.tar.gz", "has_sig": false, "md5_digest": "787deec329287e59b9d5c201621c20e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5519, "upload_time": "2014-04-19T12:45:23", "url": "https://files.pythonhosted.org/packages/07/dd/ac43b668e97a52a53c78ba1a1a924763074ce8b1c26cb1a46d325bb19cbf/sqlaqb-0.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "787deec329287e59b9d5c201621c20e3", "sha256": "34081a0ef5c7e8cd16136193b9f3b9020a188dc6eb4da654de36221174be1f82" }, "downloads": -1, "filename": "sqlaqb-0.0.1.tar.gz", "has_sig": false, "md5_digest": "787deec329287e59b9d5c201621c20e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5519, "upload_time": "2014-04-19T12:45:23", "url": "https://files.pythonhosted.org/packages/07/dd/ac43b668e97a52a53c78ba1a1a924763074ce8b1c26cb1a46d325bb19cbf/sqlaqb-0.0.1.tar.gz" } ] }