{ "info": { "author": "Oscar Martinez", "author_email": "omtinez@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 :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "==============\nPandasDatabase\n==============\n\n.. image:: https://img.shields.io/pypi/v/pddb.svg\n :target: https://pypi.python.org/pypi/pddb\n\n.. image:: https://img.shields.io/travis/omtinez/pddb.svg\n :target: https://travis-ci.org/omtinez/pddb\n\n.. image:: https://readthedocs.org/projects/pddb/badge/?version=latest\n :target: https://pddb.readthedocs.org/en/latest/?badge=latest\n :alt: Documentation Status\n\n\nPrototyping database engine for Python\n\n* Free software: MIT License\n* Documentation: https://pddb.readthedocs.org.\n\nIntroduction\n------------\n\nPandasDatabase is a RESTful database engine application built on top of Pandas. Essentially, it is\nan abstraction layer that projects the database-table-column model into a very simple set of API's.\nAs a database engine, it has some useful features that make it a good candidate for prototype work:\n\n* Inherits all the performance and robustness of Pandas.\n* Very simple and intuitive API set.\n* Tables support dynamic schema, so every time columns are changed during development there is no\n need to alter tables or CREATE statements.\n* All data is persisted in plaintext, human-readable CSV format.\n\nSome of those features come at a cost that probably makes PandasDatabase less than ideal for\nproduction environments:\n\n* Security. At the server, the security model is based on file permissions. For the API's,\n production environments should very likely never expose database API's of any form.\n* Performance. While low latency production environments might not run into an issue,\n performance-critical applications will probably run into a bottleneck when writing to disk.\n* Data types. Exposing all the table data in CSV format means that complex data types such as date\n cannot be supported.\n\nThe Problem\n-----------\n\nA very large number of small projects have fairly simple requirements for data storage. For all\nthose projects, interfacing with a database engine is boilerplate work that adds unnecessary\noverhead during development. This project provides a very simple yet powerful solution that is\ngreat for prototype work to enable those small projects to hit the ground running. Once the\ncritical components of the project are finished and a proof of concept version is running, projects\ncan transition to a more mature database engine that can better suit the needs of a production\nenvironment.\n\nGetting Started\n---------------\n\nThis project is entirely Python based. To be able to use it, first install the dependencies::\n\n $ pip install pandas bottle\n\nThe easiest way to install PandasDatabase is using pip::\n\n $ pip install pddb\n\nTo fire up the database engine, simply run::\n\n $ python -m pddb.pddb dbname --permissions w\n\nBy default, the database is started in read-only mode, which is why we need to pass the\n``--permissions w`` flag. This should start a bottle application with the following endpoints\navailable:\n\n* ``/pddb``\n* ``/pddb/find/