You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by Apache Wiki <wi...@apache.org> on 2010/10/21 14:07:11 UTC
[Couchdb Wiki] Update of "Getting_started_with_PL/SQL" by ZekeriyaKoc
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for change notification.
The "Getting_started_with_PL/SQL" page has been changed by ZekeriyaKoc.
http://wiki.apache.org/couchdb/Getting_started_with_PL/SQL?action=diff&rev1=18&rev2=19
--------------------------------------------------
- ## page was copied from Getting_started_with_Python
- Getting started with Python and the CouchDB API.
+ Getting started with Oracle PL/SQL and the CouchDB API.
== Library ==
- === couchdbkit ===
- . http://couchdbkit.org/
+ === couch_orcl ===
+ . [[http://couchdbkit.org/|http://http://projects.zekzekus.com/projects/couch-orcl]]
- Start using Couchdbkit by reading the [[http://couchdbkit.org/docs/gettingstarted.html|Getting Started tutorial]].
-
- For django use the [[http://www.couchdbkit.org/docs/django-extension.html|django extension]] of couchdbkit. Other extension exists for [[http://docs.formalchemy.org/ext/couchdb.html|formalchemy]].
-
- === couchdb-python ===
- The code for the Python library can be obtained from:
-
- . http://code.google.com/p/couchdb-python
-
- From a terminal window:
-
- {{{
- $ wget http://peak.telecommunity.com/dist/ez_setup.py
- $ sudo python ez_setup.py
- $ wget http://pypi.python.org/packages/2.6/C/CouchDB/CouchDB-0.8-py2.6.egg
- $ sudo easy_install CouchDB-0.8-py2.6.egg
- }}}
- This first downloads and installs the ''ez_setup.py'' script which runs python ''.egg'' files. The second part downloads the ''.egg'' file for CouchDB and installs it along with its dependencies.
-
- You can find the documentation [[http://packages.python.org/CouchDB/getting-started.html|here]], although make sure you use the latest version.
-
- === couchquery ===
- . http://mikeal.github.com/couchquery/
-
- An implementation of the python 'shelve' API using couchquery as a backend
-
- . http://www.randomwalking.com/snippets/couchshelve.text
-
- == Tutorial on using couchdb-python with Django ==
- A tutorial on using Django (a Python framework) with CouchDb can be found at
-
- . http://lethain.com/entry/2008/aug/18/an-introduction-to-using-couchdb-with-django/ http://www.eflorenzano.com/blog/post/using-couchdb-django/
-
- Alternatively you can view just the source for that example at
-
- . http://github.com/lethain/comfy-django-example/tree/master
-
- == Example Wrapper Class ==
- Demonstration of basic API-interaction using Python. (note: as of python 2.6, one can use "import json" for the same functionality in this script.)
-
- {{{#!python
- #! /usr/bin/python2.4
-
- import httplib, simplejson # http://cheeseshop.python.org/pypi/simplejson
- # Here only used for prettyprinting
-
- def prettyPrint(s):
- """Prettyprints the json response of an HTTPResponse object"""
-
- # HTTPResponse instance -> Python object -> str
- print simplejson.dumps(simplejson.loads(s.read()), sort_keys=True, indent=4)
-
- class Couch:
- """Basic wrapper class for operations on a couchDB"""
-
- def __init__(self, host, port=5984, options=None):
- self.host = host
- self.port = port
-
- def connect(self):
- return httplib.HTTPConnection(self.host, self.port) # No close()
-
- # Database operations
-
- def createDb(self, dbName):
- """Creates a new database on the server"""
-
- r = self.put(''.join(['/',dbName,'/']), "")
- prettyPrint(r)
-
- def deleteDb(self, dbName):
- """Deletes the database on the server"""
-
- r = self.delete(''.join(['/',dbName,'/']))
- prettyPrint(r)
-
- def listDb(self):
- """List the databases on the server"""
-
- prettyPrint(self.get('/_all_dbs'))
-
- def infoDb(self, dbName):
- """Returns info about the couchDB"""
- r = self.get(''.join(['/', dbName, '/']))
- prettyPrint(r)
-
- # Document operations
-
- def listDoc(self, dbName):
- """List all documents in a given database"""
-
- r = self.get(''.join(['/', dbName, '/', '_all_docs']))
- prettyPrint(r)
-
- def openDoc(self, dbName, docId):
- """Open a document in a given database"""
- r = self.get(''.join(['/', dbName, '/', docId,]))
- prettyPrint(r)
-
- def saveDoc(self, dbName, body, docId=None):
- """Save/create a document to/in a given database"""
- if docId:
- r = self.put(''.join(['/', dbName, '/', docId]), body)
- else:
- r = self.post(''.join(['/', dbName, '/']), body)
- prettyPrint(r)
-
- def deleteDoc(self, dbName, docId):
- # XXX Crashed if resource is non-existent; not so for DELETE on db. Bug?
- # XXX Does not work any more, on has to specify an revid
- # Either do html head to get the recten revid or provide it as parameter
- r = self.delete(''.join(['/', dbName, '/', docId]))
- prettyPrint(r)
-
- # Basic http methods
-
- def get(self, uri):
- c = self.connect()
- headers = {"Accept": "application/json"}
- c.request("GET", uri, None, headers)
- return c.getresponse()
-
- def post(self, uri, body):
- c = self.connect()
- headers = {"Content-type": "application/json"}
- c.request('POST', uri, body, headers)
- return c.getresponse()
-
- def put(self, uri, body):
- c = self.connect()
- if len(body) > 0:
- headers = {"Content-type": "application/json"}
- c.request("PUT", uri, body, headers)
- else:
- c.request("PUT", uri, body)
- return c.getresponse()
-
- def delete(self, uri):
- c = self.connect()
- c.request("DELETE", uri)
- return c.getresponse()
- }}}
- == Usage Example ==
- {{{#!python
- def test():
- foo = Couch('localhost', '5984')
-
- print "\nCreate database 'mydb':"
- foo.createDb('mydb')
-
- print "\nList databases on server:"
- foo.listDb()
-
- print "\nCreate a document 'mydoc' in database 'mydb':"
- doc = """
- {
- "value":
- {
- "Subject":"I like Planktion",
- "Author":"Rusty",
- "PostedDate":"2006-08-15T17:30:12-04:00",
- "Tags":["plankton", "baseball", "decisions"],
- "Body":"I decided today that I don't like baseball. I like plankton."
- }
- }
- """
- foo.saveDoc('mydb', doc, 'mydoc')
-
- print "\nCreate a document, using an assigned docId:"
- foo.saveDoc('mydb', doc)
-
- print "\nList all documents in database 'mydb'"
- foo.listDoc('mydb')
-
- print "\nRetrieve document 'mydoc' in database 'mydb':"
- foo.openDoc('mydb', 'mydoc')
-
- print "\nDelete document 'mydoc' in database 'mydb':"
- foo.deleteDoc('mydb', 'mydoc')
-
- print "\nList all documents in database 'mydb'"
- foo.listDoc('mydb')
-
- print "\nList info about database 'mydb':"
- foo.infoDb('mydb')
-
- print "\nDelete database 'mydb':"
- foo.deleteDb('mydb')
-
- print "\nList databases on server:"
- foo.listDb()
-
- if __name__ == "__main__":
- test()
- }}}
- == Sample Output ==
- {{{#!java
- Create database 'mydb':
- {
- "ok": true
- }
-
- List databases on server:
- [
- "mydb"
- ]
-
- Create a document 'mydoc' in database 'mydb':
- {
- "_id": "mydoc",
- "_rev": 362213977,
- "ok": true
- }
-
- Create a document, using an assigned docId:
- {
- "_id": "CF29360495B2AAB44C7E43E5752A5123",
- "_rev": 627930386,
- "ok": true
- }
-
- List all documents in database 'mydb'
- {
- "rows": [
- {
- "_id": "CF29360495B2AAB44C7E43E5752A5123",
- "_rev": 627930386
- },
- {
- "_id": "mydoc",
- "_rev": 362213977
- }
- ],
- "view": "_all_docs"
- }
-
- Retrieve document 'mydoc' in database 'mydb':
- {
- "_id": "mydoc",
- "_rev": 362213977,
- "value": {
- "Author": "Rusty",
- "Body": "I decided today that I don't like baseball. I like plankton.",
- "PostedDate": "2006-08-15T17:30:12-04:00",
- "Subject": "I like Planktion",
- "Tags": [
- "plankton",
- "baseball",
- "decisions"
- ]
- }
- }
-
- Delete document 'mydoc' in database 'mydb':
- {
- "_rev": 3811288472,
- "ok": true
- }
-
- List all documents in database 'mydb'
- {
- "rows": [
- {
- "_id": "CF29360495B2AAB44C7E43E5752A5123",
- "_rev": 627930386
- }
- ],
- "view": "_all_docs"
- }
-
- List info about database 'mydb':
- {
- "db_name": "mydb",
- "doc_count": 1,
- "update_seq": 3
- }
-
- Delete database 'mydb':
- {
- "ok": true
- }
-
- List databases on server:
- []
- }}}
-