{ "info": { "author": "Jeffrey Tratner", "author_email": "jeffrey.tratner@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Database :: Front-Ends", "Topic :: Scientific/Engineering :: Information Analysis" ], "description": "============\nGraphAlchemy\n============\n\n.. contents::\n :depth: 2\n\nGraph node-edge relationships in SQLAlchemy_ (and soon more orms) + networkx_\nintegration.\n\nThe Goal\n========\n\nSet up a generalized abstraction/interface for a graph that can be used across\nvarious platforms and within various frameworks that is easy and simple to use,\nextensible, and that easily hooks into other graphing tools (like gephi_\nnetworkx_, etc.)\n\nWhat's here\n===========\n\nA basic set of node/edge abstractions + many-to-one relationships for a graph\nrepresented in SQL with SQLAlchemy_\n\nUsing this package\n==================\n\nDocumentation_ is available at http://graphalchemy.readthedocs.org\n\nIt's very simple to use (and examples are to come). But for now the best thing to do is\nto go read the docs on SQLAlchemy_\n\nA very minimal example (using an SQLite database)::\n\n from graphalchemy.sqlmodels import create_base_classes, sqlite_connect\n from sqlalchemy.ext.declarative import declarative_base\n\n Base = declarative_base()\n Node, Edge = create_base_classes(NodeClass=\"Node\", EdgeClass=\"Edge\", Base=Base)\n engine, session = sqlite_connect(\"database.db\", metadata=Base.metadata)\n\n # be sure to use unicode!!\n node1 = Node(label=u\"First node!\")\n node2 = Node(label=u\"Second node!\")\n node3 = Node(label=u\"Third node!\")\n edge1 = Edge.connect_nodes(node1, node2)\n edge2 = Edge.connect_nodes(node1, node3)\n\n session.add_all([node1, node2, node3, edge1, edge2])\n session.commit()\n\n\n # now we can graph it\n\n import networkx as nx\n G = nx.Graph()\n G.add_edges_from([edge1, edge2])\n\n # now we can draw this! (if you had pylab, matplotlib, etc)\n\nAnd you'd get a picture that looked something like this (clearly, we haven't added all the traits\nand such in, but you get the idea):\n\n.. image:: https://github.com/jtratner/graphalchemy/raw/master/docs/images/readme-example.png\n\nNow, obviously this is a pretty minimal example, but it shows how you can take advantage\nof the power of SQL joins, queries, etc, but also very easily \n\nWhat's going to be here\n=======================\n\n1. networkx_ integration\n2. testing for multiple sql databases and adapters\n3. abstractions for Google App Engine, mongoalchemy_, and possibly Django ORM\n4. adapter between networkx_ and web service requests (maybe?)\n\nTesting coverage\n================\n\nBasic test suite that gets 100% line coverage for SQLAlchemy models and base\nmodels (still missing a test for Flask-SQLAlchemy). I've only run it on SQLite\nso far, but presumably it should work with other SQL databases just fine (since\nit uses SQLAlchemy's `declarative base`_)\n\n.. _sqlalchemy : http://www.sqlalchemy.org/\n.. _networkx : http://networkx.lanl.gov/\n.. _mongoalchemy : http://www.mongoalchemy.org/\n.. _gephi : http://gephi.org/\n.. _declarative base : http://docs.sqlalchemy.org/en/rel_0_7/orm/extensions/declarative.html\n.. _documentation : http://graphalchemy.readthedocs.org", "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": "MIT License", "maintainer": null, "maintainer_email": null, "name": "graph-alchemy", "package_url": "https://pypi.org/project/graph-alchemy/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/graph-alchemy/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/graph-alchemy/0.1.0/", "requires_dist": null, "requires_python": null, "summary": "Basic Node/Edge model for SQLAlchemy", "version": "0.1.0" }, "last_serial": 792664, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "057c3f7ce49c9304277aec935e5338bc", "sha256": "54481aa54345c74fe926519a6bb93ab4c0c2f1ae6f2514e4ba637c594c3d2d46" }, "downloads": -1, "filename": "graph-alchemy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "057c3f7ce49c9304277aec935e5338bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12170, "upload_time": "2012-08-08T09:46:03", "url": "https://files.pythonhosted.org/packages/ec/0f/b82e94205882daa67d9fd3d847e0bd876ed1c4b50a2e9300065272256967/graph-alchemy-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "057c3f7ce49c9304277aec935e5338bc", "sha256": "54481aa54345c74fe926519a6bb93ab4c0c2f1ae6f2514e4ba637c594c3d2d46" }, "downloads": -1, "filename": "graph-alchemy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "057c3f7ce49c9304277aec935e5338bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12170, "upload_time": "2012-08-08T09:46:03", "url": "https://files.pythonhosted.org/packages/ec/0f/b82e94205882daa67d9fd3d847e0bd876ed1c4b50a2e9300065272256967/graph-alchemy-0.1.0.tar.gz" } ] }