{ "info": { "author": "teitei-tk", "author_email": "teitei.tk@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Software Development", "Topic :: Software Development :: Libraries" ], "description": "Marguerite\n==========\n\nMarguerite provides a declarative, consistent accessor to data layer.\n\n--------------\n\nDependencies\n============\n\n- Python 2.7 or later\n- Werkzeug 0.12.7 or later\n\nInstallation\n============\n\n.. code:: bash\n\n $ pip install Marguerite\n\nUsage\n=====\n\nExample\n-------\n\nInstall requests as an example.\n\n.. code:: bash\n\n $ pip install requests\n\n1. define data layer accessor, and writen access structure \\`\\`\\`python\n from marguerite import AbstractStructure, AbstractAccessor, Order\n from marguerite.accessors import bind\n\nclass Accessor(AbstractAccessor): def prepare(self, name, value): order\n= self.structure.get\\_order(name) return bind(order, value)\n\n::\n\n def create(self, name, value):\n order = self.prepare(name, value)\n return requests.post(order).json()\n\n def get(self, name, value={}):\n order = self.prepare(name, value)\n return requests.get(order).json()\n\nclass UserStructure(AbstractStructure): **accessor** = Accessor\n\n::\n\n orders = Order(\n user = \"https://example.com/users/:id\",\n create = \"https://example.com/users/:id?=username=:username\"\n )\n\n\\`\\`\\`\n\n2. get data layer accessor object \\`\\`\\`python from marguerite import\n Marguerite\n\nmarguerite = Marguerite() accessor =\nmarguerite.get\\_accessor(\"path.to.UserStructure\") \\`\\`\\`\n\n3. fetch data \\`\\`\\`python # execute get logic result =\n accessor.get(\"user\", { \"id\": 1 }) print(result) # {\"id\": 1,\n \"username\": \"john\"...}\n\nexecute post logic\n==================\n\nresult = accessor.create(\"create\", { \"id\": 2, \"username\": \"marguerite\"\n}) print(result) # {\"status\": \"success\", {\"result\": {\"id\": 2,\n\"username\": \"marguerite\"...}}} \\`\\`\\`\n\nSQLAlchemy\n----------\n\n.. code:: bash\n\n $ pip install SQLAlchemy MySQL-python\n\n1. create database\n\n .. code:: mysql\n\n mysql> create database marguerite;\n Query OK, 1 row affected (0.00 sec)\n\n2. define database structure \\`\\`\\`python from marguerite import Order\n from marguerite.accessors.sql import SQLAlchemyAccessor from\n marguerite.structures.sql import SQLAlchemyStructure\n\nclass User(SQLAlchemyStructure): **struct** = { \"id\": int(), \"name\":\nstr(), \"email\": str(), }\n\n::\n\n orders = Order(\n create_table = \"\"\"\n CREATE TABLE IF NOT EXISTS __table__(\n id int(11) unsigned NOT NULL AUTO_INCREMENT,\n name varchar(255) NOT NULL DEFAULT '',\n PRIMARY KEY (id)\n ) ENGINE=InnoDB CHARSET=utf8;\n \"\"\",\n\n drop_table = \"\"\"\n DROP TABLE IF EXISTS __table__\n \"\"\",\n\n insert = \"\"\"\n INSERT INTO\n __table__(name)\n VALUES\n (:name)\n \"\"\",\n\n select = \"\"\"\n SELECT\n *\n FROM\n __table__\n WHERE\n id = :id\n \"\"\",\n\n find = \"\"\"\n SELECT\n *\n FROM\n __table__\n WHERE\n id in (:id1, :id2)\n \"\"\"\n )\n\n\\`\\`\\`\n\n3. get database accessor object \\`\\`\\`python from marguerite import\n Marguerite\n\nengine =\ncreate\\_engine(\"mysql+mysqldb://root:@localhost:3309/marguerite\")\n\nmarguerite = Marguerite(engine) accessor =\nmarguerite.get\\_accessor(\"path.to.User\") \\`\\`\\`\n\n4. create table\n\n .. code:: python\n\n accessor.execute(\"create_table\")\n\n5. check also\n\n .. code:: mysql\n\n mysql> use marguerite\n Database changed\n mysql> show tables;\n +----------------------+\n | Tables_in_marguerite |\n +----------------------+\n | user |\n +----------------------+\n\n6. fetch data \\`\\`\\`python # insert record at user table\n accessor.execute(\"insert\", {\"name\": \"john\"})\n\nget record\n==========\n\nrow = accessor.get(\"select\", { \"id\": 1 }) print(row) # {\"id\": 1, \"name\":\n\"john\", \"email\": \"\"}\n\nfind records\n============\n\nrows = accessor.find(\"find\", { \"id1\": 1, \"id2\": 2 }) print(rows) #\n[{\"id\": 1, \"name\": \"john\", \"email\": \"\"}] \\`\\`\\`\n\nLICENSE\n=======\n\nApache License 2.0", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/teitei-tk/Marguerite/archive/master.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/teitei-tk/Marguerite", "keywords": "Marguerite,dispatcher,architecture,SQLAlchemy", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "Marguerite", "package_url": "https://pypi.org/project/Marguerite/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Marguerite/", "project_urls": { "Download": "https://github.com/teitei-tk/Marguerite/archive/master.tar.gz", "Homepage": "https://github.com/teitei-tk/Marguerite" }, "release_url": "https://pypi.org/project/Marguerite/1.0.2/", "requires_dist": null, "requires_python": null, "summary": "Marguerite provides a declarative, consistent accessor to data layer.", "version": "1.0.2" }, "last_serial": 2811305, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "99110777c85edcdcad39d78c2f407479", "sha256": "9a9d82cc5b1adc4c03671e010bafc584405989e674e92d4258fa2d358be01b13" }, "downloads": -1, "filename": "Marguerite-0.0.2.tar.gz", "has_sig": false, "md5_digest": "99110777c85edcdcad39d78c2f407479", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3665, "upload_time": "2017-04-10T13:38:46", "url": "https://files.pythonhosted.org/packages/11/8d/84735c8182f3eab640dc85fda361fa9570c0a88f2cec93305e1e89f031d1/Marguerite-0.0.2.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "72a80cc97481608b98257fffdffbe4cd", "sha256": "7dd81caa2570a82c9eaa0d580a65a645c0d7a1f64bf4a16cf8ef82b0bffc38ff" }, "downloads": -1, "filename": "Marguerite-1.0.0.tar.gz", "has_sig": false, "md5_digest": "72a80cc97481608b98257fffdffbe4cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3677, "upload_time": "2017-04-10T14:11:54", "url": "https://files.pythonhosted.org/packages/38/a8/4844ea5805e3ba90e7ae22593372b43c0a3ad0a3f8eaa8eb7887a35a2f16/Marguerite-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "cbe92d6878e3b4dc878c27ea4e9fbfac", "sha256": "62d2369c2898113d226d0f4f52be1b5cd9e4a620b1664741593a68a753fac789" }, "downloads": -1, "filename": "Marguerite-1.0.1.tar.gz", "has_sig": false, "md5_digest": "cbe92d6878e3b4dc878c27ea4e9fbfac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3744, "upload_time": "2017-04-11T13:23:40", "url": "https://files.pythonhosted.org/packages/c7/49/fb0fd0b6a0acc6a4760b62df3fcd5962267be47eee2ef0c596cf64c62a05/Marguerite-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "3d9e3905efa407425a35846378198190", "sha256": "c815fb90d7d5c5c122fcc0352da30e3cc82c0f70bff2121b474cee792c8c6ef2" }, "downloads": -1, "filename": "Marguerite-1.0.2.tar.gz", "has_sig": false, "md5_digest": "3d9e3905efa407425a35846378198190", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5985, "upload_time": "2017-04-18T14:30:53", "url": "https://files.pythonhosted.org/packages/ab/38/b3756fb428e5634bb4608f7463263bce5eb81b244cb7d5f96d8cbb6abf2c/Marguerite-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3d9e3905efa407425a35846378198190", "sha256": "c815fb90d7d5c5c122fcc0352da30e3cc82c0f70bff2121b474cee792c8c6ef2" }, "downloads": -1, "filename": "Marguerite-1.0.2.tar.gz", "has_sig": false, "md5_digest": "3d9e3905efa407425a35846378198190", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5985, "upload_time": "2017-04-18T14:30:53", "url": "https://files.pythonhosted.org/packages/ab/38/b3756fb428e5634bb4608f7463263bce5eb81b244cb7d5f96d8cbb6abf2c/Marguerite-1.0.2.tar.gz" } ] }