Created
October 23, 2019 04:19
-
-
Save dev-zetta/546a672247763da200e4cb133cbdb678 to your computer and use it in GitHub Desktop.
CouchDB connector
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import urllib | |
import hashlib | |
import httplib | |
import simplejson | |
import sys | |
db = {'host':'localhost', | |
'port':5984, | |
'db':'backups'} | |
class cdb (object): | |
def __init__ (self, db = db): | |
self.host = db ['host'] | |
self.port = db ['port'] | |
self.db = db['db'] | |
self.db = self.db.strip () | |
if self.db [0] != "/": | |
self.db = "/"+self.db | |
if self.db [-1] != "/": | |
self.db = self.db + "/" | |
self.dbex = self.db[1:-1] in self.all_dbs () | |
def req (self, reqtype, req, body=None): | |
headers = {"Accept": "application/json"} | |
conn = httplib.HTTPConnection (self.host, self.port) | |
conn.request (reqtype, req, body, headers) | |
response = conn.getresponse () | |
response_read = response.read () | |
return simplejson.loads (response_read) | |
def get_req (self, request, body = None): | |
return self.req ('GET', request, body) | |
def put_req (self, request, body = None): | |
return self.req ('PUT', request, body) | |
def del_req (self,request, body = None): | |
return self.req ('DELETE', request, body) | |
def all_dbs (self): | |
return self.get_req ("/_all_dbs") | |
def all_docs (self): | |
return self.get_req (self.db + "_all_docs") | |
def createdb (self): | |
if self.db in self.all_dbs (): | |
print "ERROR: database already exists." | |
return | |
return self.put_req (self.db) | |
def putdoc (self, docid, doc): | |
return self.put_req (self.db + docid, str (doc)) | |
def putdoc_noid (self, doc): | |
uuid = self.get_req ("/_uuids") | |
print uuid | |
print uuid.keys () | |
return self.putdoc (uuid ["uuids"][0], str (doc)) | |
def getdoc (self, docid): | |
return self.get_req (self.db + docid) | |
def deldoc (self, docid): | |
doc = self.getdoc (docid) | |
revids = '/?rev='+ str (doc['_rev']) | |
url = self.db + docid + revids | |
return self.del_req (url) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment