ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

couchdb-python

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

couchdb-python.png couchdb-python ist ein Python-Modul, mit dessen Hilfe auf die dokumentenorientierte Datenbank CouchDB aus Python heraus zugegriffen werden kann. Weiterhin gibt es einen Mapper {en}, der die JSON-basierten Dokumente aus CouchDB auf Python-Objekt abbildet sowie ein View Server {en}, der es erlaubt, CouchDB Views für die Datenbank in Python zu schreiben.

Interessant ist couchdb-python aber auch für Nicht-Python Programmierer, da zwei weitere Hilfsprogramme couchdb-dump und couchdb-load mit an Bord sind. Diese ermöglichen, eine Sicherung des Inhalts einer Datenbank lokal in eine Datei zu erstellen und diese dann auch wieder in eine Datenbank zurück zu spielen. Beides ist mit den Bordmittel von CouchDB so nicht möglich.

Installation

Aus den Quellen

couchdb-python kann direkt aus den Quellen installiert werden[1], das zugehörige Paket heißt:

  • python-couchdb

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install python-couchdb 

sudo aptitude install python-couchdb 

Manuelle Installation

Die Version aus den Lucid-Quellen ist nicht die aktuellste Version. Wer diese benötigt, der kann das neuste Modul z.B. auch über die Setuptools installieren. Der entsprechende Befehl lautet[2]:

sudo easy_install couchdb 

Benutzung

Python-Modul

Wer das Modul für eigene Projekte nutzen möchte, der sollte sich mit den beiden Hauptklassen couchdb.client und couchdb.schema beschäftigen. Erstere enthält alle benötigten Klassen und Methoden zum Abfragen der Datenbank sowie zum Anlegen von Datenbanken und Dokumenten, letztere stellt den eingangs erwähnten Mapper bereit.

Eine ausführliche Beschreibung mit vielen Beispielen ist in der offiziellen Dokumentation {en} zu finden.

Hinweis:

Mit der Version 0.7. gab es eine Änderung der API von couchdb-python. Es wurde der Name der Klasse des Mappers geändert. Bis einschließlich Version 0.6.x (welche auch die Version aus den Lucid-Quellen ist), kann der Mapper über import couchdb.schema importiert werden, ab Version 0.7 aber über import couchdb.mapping.

Hilfsprogramme

Wie in der Einleitung bereits erwähnt, bringt couchdb-python zwei Hilfsprogramme mit, mit deren Hilfe sich eine Datenbank komplett, also sowohl Dokumente als auch Views, lokal in eine einzige Datei sichern und auch aus dieser Datei wieder zurück spielen lassen. Dies ist z.B. dann nützlich, wenn man eine Datenbank zwischen zwei CouchDB Servern transferieren will, welche nicht im gleichen Netzwerk sind, so dass keine Replikation möglich ist.

Technisch gesehen wird beim Dump die Datenbank einfach in eine einzige große Textdatei geschrieben, wobei der Inhalt im Format JSON abgelegt wird. Dabei wird immer nur die aktuellste Revision gesichert wird.

Der Befehl zum Sichern einer Datenbank (hier: MEINE_DB) in eine Datei (hier: mein.dump) lautet[2]:

couchdb-dump http://localhost:5984/MEINE_DB > mein.dump 

Der Befehl zum zurück spielen in die Datenbank MEINE_NEUE_DB lautet:

couchdb-load http://localhost:5984/MEINE_NEUE_DB < mein.dump 

Da für die Zieldatenbank alle Dokumente neu sind, beginnt hier die Revisionszählung wieder bei eins - unabhängig davon, welche Revisionsnummern die Dokumente in der Ausgangsdatenbank hatten. Wenn die Revisionsnummern also beim Transfer der Dokumente erhalten bleiben soll, ist der Weg via couchdb-dump und couchdb-load also nicht der geeignete.

Problembehebung

couchdb-dump bricht mit einen UnicodeEncodeError ab

couchdb-dump bricht den Dump mit einem "UnicodeEncodeError" ab, wenn die ID eines Dokuments Nicht-ASCII Zeichen (wie z.B. äöüß) enthält. Details inkl. Patches siehe auch Ticket 179 {en}

Intern

  • CouchDB - Wikiartikel zur Datenbank

Extern

  • Couchdbkit {en} - alternatives Python-Modul für CouchDB

ubuntuusers.local › Wikicouchdb-python