RethinkORM: Introduction
========================
Build status:
.. image:: https://secure.travis-ci.org/JoshAshby/pyRethinkORM.png?branch=master
:target: http://travis-ci.org/JoshAshby/pyRethinkORM
RethinkORM is a small wrapper class to help make working with documents in
`RethinkDB `__ easier, and in a more Pythonic way.
I recently found RethinkDB and was amazed at how easy everything seemed
to be, however one thing that I've missed is how the data is just a
Python ``List`` or ``Dict`` rather than a full wrapper class. So I
figured a good way to learn the general use of the Python RethinkDB
driver was to write a general wrapper class that functioned a bit like
an ORM, providing some easier to work with data and objects.
Unittests are included, and the code should be `PEP8
`__ compliant. The tests are
automatically ran each commit, thanks to `travis-ci.org
`__ and this documentation is kindly hosted and
automatically rebuilt by `readthedocs.org `__.
Gittip if you like the work I do and would consider a small donation to help
fund me and this project:
.. raw:: html
A Few Minor Warnings
--------------------
#. I'm only a second year university student, and software
isn't even my major; I'm working towards an Electrical and Computer
Engineering degree, so not only do I have limited time to keep this
maintained, but I also probably won't write the best code ever.
#. This takes some influence from the `Python Django RethinkDB
ORM `__ and other ORM systems,
however I haven't really followed a standard pattern for the interface
for this module. If someone wants to make this more standardized feel
free to, and just submit a pull request, I'll look it over and probably
will give it the go ahead. For more information see below.
#. This is a very early release, things might break, and the code is honestly a
little childish at best. In other words: It'll hopefully get better, but it
might be a little limited right now.
Quick Start:
------------
First we need to make an object which will represent all of our data in
a specific table, along with getting a connection to RethinkDB started.
::
import rethinkdb as r
from rethinkORM import RethinkModel
r.connect(db="props").repl()
class tvProps(RethinkModel):
table = "stargate_props"
For more information on what class properties are available to change, see
:ref:`rethinkORM`
Inserting/creating an entry
~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
dhdProp = tvProps(what="DHD", planet="P3X-439", description="Dial HomeDevice")
dhdProp.id="DHD_P3X_439"
dhdProp.save()
Updating an entry
~~~~~~~~~~~~~~~~~
::
updatedProp = tvProps("DHD_P3X_439")
updatedProp.description="""Dial Home Device from the planel P3X-439, where an
Ancient Repository of Knowledge was found, and interfaced with by Colonel
Jack."""
updatedProp.save()
Deleting an entry
~~~~~~~~~~~~~~~~~
::
oldProp = tvProps("DHD_P3X_439")
oldProp.delete()
Contributing
------------
Submit a pull request or open an issue. Most things I probably won't have
time to get around to looking at too deeply, so if you want it fixed, a pull
request is the way to go.
Besides that, I'm releasing this under the GPLv3 License as found in the
``LICENSE.txt`` file. Enjoy!
Doc Contents
------------
.. toctree::
:maxdepth: 4
rethinkORM
Indices and tables
~~~~~~~~~~~~~~~~~~
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`