Skip to content

Instantly share code, notes, and snippets.

@ownport
Created August 25, 2015 04:25
Show Gist options
  • Save ownport/37f57cb17ed2b08cfa4e to your computer and use it in GitHub Desktop.
Save ownport/37f57cb17ed2b08cfa4e to your computer and use it in GitHub Desktop.
Simple RethinkDB Python Wrapper
import urlparse
import rethinkdb as r
class RethinkDBWrapper(object):
def __init__(self, settings):
''' init RethinkDBWrapper
settings = {
'server': <rethinkdb-server-host>,
'db': <database-name>
}
'''
if not isinstance(settings, dict):
raise ValueError('The connection settings should be dictionary type, %s' % type(settings))
self.settings = settings
self._conn = r.connect(self.settings['server'])
def req(self, table):
return r.db(self.settings['db']).table(table)
def execute(self, stmt):
if not isinstance(stmt, r.ast.RqlQuery):
raise ValueError('Expecting <RqlQuery> instance, got <%s>' % type(stmt))
return stmt.run(self._conn)
def insert_item(self, table, data):
self.execute(self.req(table).insert(data))
def get_item(self, table, limit=0):
if limit > 0:
return self.execute(self.req(table).limit(limit))
else:
return self.execute(self.req(table))
def update_item(self, table, item_id, data):
self.execute(r.req(tablename).get(item_id).update(data))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment