Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/AlexMikhalev/couchdbkit
CouchDB python framework
https://github.com/AlexMikhalev/couchdbkit
Last synced: 3 months ago
JSON representation
CouchDB python framework
- Host: GitHub
- URL: https://github.com/AlexMikhalev/couchdbkit
- Owner: AlexMikhalev
- License: other
- Fork: true (benoitc/couchdbkit)
- Created: 2010-03-02T14:36:22.000Z (over 14 years ago)
- Default Branch: master
- Last Pushed: 2010-03-02T10:24:47.000Z (over 14 years ago)
- Last Synced: 2024-07-18T21:58:20.933Z (4 months ago)
- Language: Python
- Homepage: http://couchdbkit.org
- Size: 1.1 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
About
-----`Couchdbkit`_ provides you a full featured and easy client to access and
manage CouchDB. It allows you to manage a CouchDBserver, databases, doc
managements and view access. All objects mostly reflect python objects for
convenience. Server and Databases objects could be used for example as easy
as using a dict.Installation
------------Couchdbkit requires Python 2.x superior to 2.5.
Install from sources::
$ python setup.py install
Or from Pypi::
$ easy_install -U couchdbkit
Getting started
---------------This tutorial exposes key features of this library mainly through code
examples. For in-depth description of the modules, you'll want to read
the `API`_ documentation.Write your first CouchDB document
+++++++++++++++++++++++++++++++++::
import datetime
from couchdbkit import *
class Greeting(Document):
author = StringProperty()
content = StringProperty()
date = DateTimeProperty()Store the submitted Greetings
+++++++++++++++++++++++++++++Here is the code to save a greet on `Greeting` database. We also see how to
create a database::# server object
server = Server()
# create database
db = server.get_or_create_db("greeting")
# associate Greeting to the db
Greeting.set_db(db)# create a new greet
greet = Greeting(
author="Benoit",
content="Welcome to couchdbkit world",
date=datetime.datetime.utcnow()
)
# save it
greet.save()Note: Here we use `contain` to associate the db to the `Greeting` object.
This function could be use to associate multiple dcouemnt objects to one db::contain(db, Doc1, ...)
Your document `greet` is now in the `greetings` db. Each document is saved
witha `doc_type` field that allow you to find easily each kind of document
with the views. By default `doc_type` is the name of the class.Now that you saved your document, you can update it::
greet.author = u"Benoit Chesneau"
greet.save()Here we updated the author name.
Dynamic properties
++++++++++++++++++Mmm ok, but isn't CouchDB storing documents schema less? Do you want to add a
property ? Easy::greet.homepage = "http://www.e-engura.org"
greet.save()Now you have just added an homepage property to the document.
Get all greetings
+++++++++++++++++You first have to create a view and save it in the db. We will call it
`greeting/all`. To do this we will use the loader system of couchdbkit that
allows you to send views to CouchDB.Let's create a folder that contains the design doc, and then the folder for
the view. On unix::mkdir -p ~/Work/couchdbkit/example/_design/greeting/views/all
In this folder we edit a file `map.js`::
function(doc) {
if (doc.doc_type == "Greeting")
emit(doc._id, doc);
}
}Here is a folder structure::
/Work/couchdbkit/example/:
--_design/
---- greetings
------ viewHere is a screenshot:
.. image:: http://couchdbkit.org/images/gettingstarted.pngA system will be provided to manage view creation and other things. As some
noticed, this system works like
`couchapp`_.Then we use `FileSystemDocsLoader` object to send the design document to
CouchDB::from couchdbkit.loaders import FileSystemDocsLoader
loader = FileSystemDocsLoader('/path/to/example/_design')
loader.sync(db, verbose=True)The design doc is now in the `greetings` database and you can get all greets::
greets = Greeting.view('greeting/all')
.. _Couchdbkit: http://couchdbkit.org
.. _API: http://couchdbkit.org/doc/api/
.. _couchapp: http://github.com/couchapp/couchapp/tree/