Sonntag, 29. Juni 2014

Mair 1 Festival 2014 2. Tag - Risk it!, Comeback Kid, Hatebreed

28.6.2104, 2. Tag des Mair 1 Festivals 2014. Nachdem der 1. Tag schon ziemlich gut war, waren die Gründe für den Besuch am 2. Tag die anstehenden Auftritte der Bands Risk it!, Comeback Kid und Hatebreed.

Leider war an diesem Tag das Wetter schlechter, es gab mehr Regenschauern. Immerhin war es trocken, als ich gegen 20.30 Uhr auf dem Festivalgelände ankam. Auf der Hauptbühne waren gerade Silverstein zu Gange. Tendenziell ruhigerer Post-Hardcore, gut vorgetragen - aber nicht wirklich mein Fall.

Kurz nach 21 Uhr legten dann auch einer kleinen Bühnen am anderen Ende des Festivalgeländes Risk it! los. Eine deutsch Hardcore Band aus Dresden, welche "klassischen" Hardcore spielen. Jedenfalls habe die fünf eine sehr gute Show hingelegt, mit Energie und Überzeugung gespielt. Ein guter Einstieg in den Abend. Aber ich habe die Show (leider) nicht zu Ende schauen können, weil gegen 21.45 Uhr Comeback Kid auf der Nebenbühne spielten.

Comeback Kid habe ich zum ersten Mal vor 6 oder 7 Jahren auf dem Mair 1 gesehen. Heute, ein paar Jahre und Alben später, haben die fünf Kanadier immer noch reichlich "Bums". Besonders der Frontmann hat unglaublich viel Energie, stürmte die ganze Show kreuz und quer über die Bühne und sang (oder schrie...) sich die Seele aus dem Leib. Kein Wunder, dass der Funke ziemlich schnell auf das Publikum übersprang und die Menge in Bewegung kam.
Alles in allem ein sehr gut, energiegeladene Hardcore-Show. Sehr schön!

Den Abschluss des Mair 1 2014 machten dann Hatebreed, welche 2012 schon Headliner waren. Die Band gehört ja zu den "ganz großen" der Hardcore Szene. Ohne großes Intro und viel Schnick-Schnack ging's dann los. Das Publikum war sofort dabei und Frontmann Jamey Jasta hat dabei auch durchaus Entertainer-Qualitäten und weiß, wie man das Publikum mit nimmt. Was, gepaart mit der Bühnenpräsenz der Band, zu einer entsprechend guten Stimmung im Publikum sorgt.
Nur leider fing es um kurz nach 23 Uhr, nach den ersten paar Songs von Hatebreed, ziemlich an zu regnen. Was der Stimmung zwar keinen Abbruch tat, mich aber dazu bewog, dann doch schon gegen 23.30 Uhr die Segel zu streichen und Hatebreed nicht noch ganz zu Ende zu schauen.

Unterm Strich auch das Mair 1 2014 ein super Festival. Ein sehr gutes Line-Up mit einigen "großen" Namen aus der Hardcore Szene, entspannte Atmosphäre und sehr gute Organisation. Wenn das Line-Up stimmt komme ich auch 2015 gerne wieder.

Samstag, 28. Juni 2014

Mair 1 Festival 2014 1. Tag - Walls of Jericho & Ignite

Am 27./28.6.2014 war es wieder soweit: das Mair 1 Festival fand, wie in den Jahren zuvor auch, auf dem Flugfeld von Montabaur statt. Traditionell ist das Festival Hardcore und Punk Rock lastig, wobei dieses Jahr viel mehr Hardcore als  Punk am Start war. Und auch dieses Jahr waren wieder ein paar hochkarätige Bands des Genres vertreten.

Während letztes Jahr netter Weise alle Bands, die ich sehen wollte, an einem Tag gespielt hatten, verteilte es sich diese Jahr auf zwei Tage.

Am Freitag, 27.6.2014 waren Walls of Jericho und danach Ignite am Start. Besonders auf WoJ war ich gespannt. Gegen 19.20 Uhr war ich vor Ort, da hatten gerade die mir bis dato unbekannten Skindred mit ihrem Set begonnen. Erster Eindruck: 20 Jahre zu spät. Diese Mischung aus Reggae und Metal war doch in den 90ern "in". Skindred 1998 wurden übrigens gegründet, passt also doch ;-) . Musikalisch nicht ganz mein Fall, aber durchaus gefällig anzuschauen. Wobei man sagen muss, dass es die Band bzw. besonders der Frontmann es sehr gut geschafft hat, das Publikum "mitzunehmen". Von daher war die Stimmung gut. Nur das Ende kam ein bisschen abrupt, scheinbar aufgrund eines technischen Problems des DJs vor dem letzten Song.

Danach kamen Walls of Jericho auf die kleinere Bühne. Und gaben von der ersten bis zur letzten Minute Vollgas. 110% Energie, top Bühnenpräsenz und absolut mitreißend. Somit war das Publikum auch direkt dabei und ab dem 3. oder 4. Song lief auch der Circle Pit.
Erstaunlich finde ich immer wieder, mit wie viel Power die Frontfrau Candace Kucsulain singen bzw. growlen kann. Und das, obwohl sie beim Sprechen eine ganz normale, weibliche Stimme hat.
Jedenfalls ein superguter Auftritt. Eine der besten Hardcore Shows, die ich bisher gesehen habe. Sehr geil!

Direkt nach Walls of Jericho waren dann Ignite auf der Hauptbühne an der Reihe. Melodischer Hardcore mit leichtem Emo-Touch, also ab und an auch mal etwas "dunkler" / depressiver. Im direkt Vergleich zu WoJ vorher wirkten Ignite ein bisschen "weich", aber die Show war trotzdem sehr gut. Ein gute Mischung aus neueren und älteren Songs, mal schneller, mal langsamer.  Auch hier war das Publikum direkt dabei und so war es eine kurzweilige, gut anzuschauende und anzuhörende Show. Sehr schön.

Nun war eigentlich Schluss für mich für heute, zumal ich noch auf einer Geburtsfeier eingeladen war. Der nächste Act war "Bam Margera as the Fuckface Unstoppable". Bam Margera ist von "Jackass" bekannt, die Band war zumindest mir bis dato ebenfalls völlig unbekannt. Also habe ich mir noch die ersten 1,5 Songs angehört. Nach einem sehr obskuren Opening ging's dann los. Klingt irgendwie nach einer Mischung aus Hardrock und Stoner Rock, hörte sich jedenfalls ganz gefällig an.

Jedenfalls hatte sich der Besuch am 1. Tag schon alleine wegen der Show von Walls of Jericho gelohnt. Am 2. Tag geht's dann weiter im Risk it!, Comeback Kid und Hatebreed.

Blogbeitrag zum Besuch des 2. Tags des Festivals: Link

Montag, 19. Mai 2014

Me First and the Gimme Gimmes - Are We Not Men? We are Diva!

Vor ein paar Tagen, also Mitte Mai 2014, ist das neue Album der Me First and the Gimme Gimmes mit dem Titel "Are We Not Men? We Are Diva!", das achte Album der Punk-Rock Allstar Band, erschienen.

Wer Me First and the Gimme Gimmes nicht kennen sollten: Die Band ist ein Nebenprojekt von Musikern der Bands NoFX, Lagwagon, Swingin' Utters und Foo Fighters und bezeichnet selbst ganz bescheiden als "The best coverband of the world". Die Band spielt ausschließlich Coversongs von zumeist sehr bekannten Poptitel - und das ganze im Punkrock-Stil.

Jedes Album der Band greift dabei ein bestimmtes Thema auf. Wie der Titel der neuen Platte "Are We Not Men? We Are Diva!" unschwer erahnen lässt, werden hier ausschließlich Titel von Pop-Diven gecovert. Und zwar von den ganz großen wie z.B. Whitney Houston, Celine Dion, Mariah Carry und interessanter Weise auch Boy Georg.

Und, wie man auch schon auf allen anderen Platten der Gimme Gimmes hören konnte: covern können die, und das richtig gut. Zwar werden alle Lieder mit mindestens doppeltem Tempo und punkrockiger Gitarre gespielt, aber alle Songs sind problemlos wieder zuerkennen. Dazu trägt auch sicherlich der sehr gute und klare Gesang von Sänger Spike Slawson bei.

Im Vergleich zu den letzten Veröffentlichungen der Band ist diese Platte etwas pop-punkiger ausgefallen, was der Sache aber keine Abbruch tut. Die Cover der Stücke "My heart will go one" und "Crazy for you" sind dabei sogar noch deutlich ruhiger als die anderen.

Nichts desto trotz ist auch "Are We Not Men? We Are Diva?" eine absolut gelungen Scheibe und eine absolute Empfehlung.
In Sache gut-hörbare und nachhaltig gute Punk-Cover von Pop-Songs sind Me First and the Gimme Gimmes nun mal die absolute Spitze. Und dies zeigen sie auch auf ihrer neusten Veröffentlichung.

Dienstag, 5. November 2013

Bad Religion "Christmas Songs"

Vor ein paar Tagen ist das neue Bad Religion Album "Christmas Songs" erschienen, dass 17. Studioalbum der Band.

Wer der Name schon stark vermuten lässt handelt es sich dabei um Weihnachtslieder, welche Bad Relgion covert. Insgesamt umfasst das Album neuen Tracks mit einer Spielzeit von ca. 20 min. Der 9. Track ist allerdings kein Weihnachtslied, sondern ein Mix des Songs "American Jesus", welches im Original auf "Recipe for hate" enthalten war.

Zu den Weihnachtsliedern: Dies sind naheliegender Weise alles amerikanische Songs, welche ich zumindest nur in Teilen kenne. Das bekannteste Lied ist wohl "White Christmas", gefolgt von "Little Drummer Boy". Auch wird die Englisch Version von "Hört der Engel helle Lieder" zum besten gegeben.
 Musikalisch ist es halt... ja, Punkrock a la Bad Religion mit Weihnachtlieder Texten.

insgesamt recht gefällig, aber kein echter Knaller. Covern ist vielleicht doch nicht stärke von Bad Religion. Das können Me First and the Gimme Gimmes deutlich besser. Die haben allerdings noch keine Platte mit Weihnachtsliedern gemacht...

Dienstag, 29. Oktober 2013

10 Tage Ubuntu Saucy Salamander - das 1. Fazit

Vor 10 Tagen, am 19.10.2013, habe ich meinem privaten Laptop (Lenovo R61) per Upgrade von Ubuntu 13.04 auf den aktuellen Release 13.10 "Saucy Salamander" aktualisiert.

Das Upgrade hatte ich via Aktualisierungsverwaltung angestoßen, durchgelaufen ist es ohne Probleme. Der ersten Bootvorgang lief auch reibungslos durch, genauso wie der Login.

Optisch sind die Änderung ja reichlich unspektakulär, sprich Saucy sieht Raring ziemlich ähnlich. In Sachen Nutzung ist auch erst Mal alles beim alten geblieben, jedenfalls ist mir nichts aufgefallen bei meiner "täglichen" Arbeit.

Gut, ganz problemlos war das Upgrade aber dann doch nicht. Über das Problem der nicht-automatischen Datenbankmigration von CouchDB hatte ich bereits geschrieben. Dies betrifft aber unter Strich nur die "Randgruppe" der CouchDB Nutzer.

Das größere Problem war, dass Unity anscheinend dachte, mein Laptop hätte ein amerikanisches Tastaturlayout, jedenfalls erschienen bei der Suche via Dash etc. die Zeichen nach dieser Tastaturbelegung. Eingestellt ist aber Deutsch und dieses wurde in der Systemsteuerung auch so angezeigt. Beim Login via Terminal 1 bis 6, also ohne GUI, stimmt das Tastaturlayout übrigens interessanter Weise. Abhilfe bracht, unter "Systemeinstellungen -> Sprache" den Punkt "System der Tastatureingabemethode" von "Standard" auf "Keine" umzustellen. Seitdem ist alles so, wie es sein soll.

Das zweite Problem verflüchtigte sich auch schnell: Der Laptop spielte Musik ganz normal ab, aber beim Einstöpseln von Kopfhörern blieben diese stumm, obwohl das Einstöpseln korrekt erkannt wurde. Nachdem ich eine Supportanfrage im Forum von ubuntuusers.de gestartet hatte, hatte sich das Problem aber dann erledigt. Wobei ich nichts gemacht hatte, außer einmal auf der Konsole den ALSA-Mixer zu starten. Ob das jetzt wirklich die Lösung war oder ob das System nur eine Hardware-Schluckauf hatte - keine Ahnung. Na ja, Hauptsache läuft.

Tja, und der Rest... der läuft halt so, wie es sein soll. Keinerlei Probleme mit Empathy, Shotwell oder Rhythmbox. Wobei ich das Beladen eines iPod Mini 3rd Generation mit MP3s via Rhythmbox noch nicht getestet habe. Unter Raring stürzte das Programm dabei nämlich reproduzierbar ab.

Erstes Fazit zum Upgrade auf Saucy: läuft problemlos, die kleineren Wehwehchen waren schnell behoben. Großer Änderungen gab's keine, jedenfalls keine auf dem Desktopsystem erkennbaren. Die Stabilität ist bei mir so, wie sie sein soll: stabil, keinerlei Abstürze, Crashs etc. Apport hat sich jedenfalls noch nicht gemeldet.

Saucy werde ich jetzt bis zum kommenden Release von 14.04 LTS "Trusty Tar" nutzen. Mal sehen, was das so bringt.

Motörhead "Aftershock" - das neue Album

Am 21.10.2013 war es mal wieder so weit: "Aftershock", das neue Album von Motörhead ist erschienen. Dies ist das 21. Album in der jetzt 38-jährigen Bandgeschichte.

Dafür muss man schon sagen - egal, wie man zu Motörhead steht - Respekt. Das schaffen nur wenige Bands. Bedenkt man noch, dass Lemmy dieses Jahr an Heilig Abend 68 Jahre alt wird und auch die anderen beiden Bandmitglieder über 50 Jahre alt sind muss man wohl nochmals sagen: Respekt. In diesem Alter schleppen sich andere mit Mühe und Not noch in den Musikantenstadl während die drei Motörheads noch agil vor sich hin rocken.

Motörhead erfreuen sich ja in mehreren "Musikkreisen" einer gewissen Popularität. Die Gruppe wird oft dem Heavy Metal zugerechnet, obwohl sie musikalisch damit nach meinem Empfinden am wenigsten zu tun haben. Motörhead ist erst Mal Rock'n'Roll der härteren Gangart, ein bisschen Hardrock, ein bisschen Punkrock und - na gut - ganz wenig Heavy Metal.

Zum Album: Das Album Aftershock ist eigentlich so, wie man es erwartet - und das ist gut so. Wo Motörhead drauf steht ist halt auch Motörhead drin, so muss das sein. Insgesamt 14 Tracks, zwei davon etwas langsamer und ruhiger, der Rest rockt. Mein persönlicher Favorit ist dabei der vierte Track "End of Time ", wo sich die Band besonders spielfreudig zeigt. Insgesamt gehört das Album nach meinem Geschmack zum oberen Drittel der Motörhead-Platten, jedenfalls der mir bekannten.

Also wer Motörhead mag, der kann hier auf jeden Fall bedenkenlos zugreifen. Und wer noch kein Album der Band hat aber doch mal eins kaufen möchte, dem kann Aftershock auch nahe gelegt werden.

Samstag, 19. Oktober 2013

Probleme mit CouchDB nach Upgrade auf Ubuntu 13.10

Gestern habe ich meinen Rechner von Ubuntu 13.04 auf 13.10 aktualisiert. Das hat auch soweit ohne Probleme geklappt (und dazu gibt's noch einen separaten Blogeintrag).

Auf dem Rechner ist auch CouchDB installiert, welches ich für die Speicherung von eine paar Daten einsetzen. Im Zuge des Upgrades wurde dann auch CouchDB von Version 1.2 auf 1.4 aktualisiert.

Erste Auffälligkeit nach dem 1. Booten von Ubuntu 13.10: Im Anmeldebildschirm erscheint ein Nutzer namens "CouchDB Administrator". Einloggen kann ich mich da aber nicht (was vielleicht daran liegt, dass ich CouchDB im "Admin-Party" Modus betreibe?).

Normal eingeloggt wurden dann Futon, die HTML-basierte GUI von CouchDB aufgerufen. Nächste Auffälligkeit: Die Datenbank wurde offensichtlich nicht auf automatisch auf die Version 1.4. migriert. Dafür gibt es einen Eintrag in der DB-Liste "1.2.0/name_der_db". Kurioser Weise kann man diese DB dann aber nicht öffnen! Den Versuch quittiert CouchDB mit der Fehlermeldung:

"Error: illegal_database_name
Name: '101/eigene_caches'. Only lowercase characters (a-z), digits (0-9), and any of the characters _, $, (, ), +, -, and / are allowed. Must begin with a letter."


Aha -  da stellt sich doch die Frage, warum die DB dann so umbenannt wurde...

Also, wie an die Daten kommen? Gut, ich habe diverse Kopien der DB auf einem anderen Laptop und meinen beiden Android-Geräten, von daher kann ich ein wenig entspannt experimentieren. Ein simples Kopieren der Datenbank-Datei und zugehörigen Views in Datenverzeichnis funktioniert nicht, CouchDB erkennt die Daten nicht als DB-Dateien.

Die Replikation von MobileFuton 1.2 (=CouchDB für Android) funktioniert ohne Problem. Die Daten sind jetzt wieder da.

Fazit: wer auch CouchDB unter Ubuntu nutzt und das Upgrade von 13.04 auf 13.10 macht - stellt vorher sicher, dass ihr eine aktuelle Sicherung der Datenbank habt bzw. repliziert das Datenbank(en) vorher auf ein anderes Gerät.

In der Doku von CouchDB habe ich keine Hinweise zu diesem Verhalten gefunden. Lediglich im Bugtracker von Debian gibt es einen Bugreport, dass die "database migration should be automatic" sein sollte (Link zum Bugreport).

Wer ähnliche Probleme hatte oder eine andere Lösung hat kann dies gerne in den Kommentaren zu diesem Blogeintrag posten.

Dienstag, 17. September 2013

sostore Version 0.4 erschienen

Am 25.8. hatte ich einen Blogpost zu sostore geschrieben. sos ist ein simple Objekt-Datenbank für Python, Details werden im verlinkten Artikel erklärt.

Anfang September ist eine neue Version 0.4. erschienen, welche eine von mir gemachten Verbesserungsvorschlag enthält: randomized ist jetzt ein Klassenattribute und wurde im Gegenzug aus der insert-Funktion entfernt.

Das macht in so fern Sinn, als dass man mit randomize im Rahmen der insert-Funktion nur genau für diesen einen, neuen Datensatz eine zufällige ID generiert hat, bei folgenden Aufrufen von insert ohne randomize die IDs aber sequentiell weiter hochgezählt wurden. In so fern hat man so eher einen Offset bei der ID erzeugt als eine echte zufällige Nummerierung.

In der Default-Einstellung steht das Attribute für randomized in der Klasse auf False. Wer also durchgehend zufällige IDs für seine Instanz der Collection-Klasse von sostore benötigt, der instanziert dies so:

>>> c = sostore.Collection('people', randomized=True)


Das ist auch die einzige grundlegenden Änderung der Version 0.4 von sostore. Ansonsten funktioniert das Modul noch so, wie im oben verlinkten Blogpost beschrieben.

Donnerstag, 12. September 2013

11 Tage China = 11 Tage ohne soziale Netzwerke

Neulich war ich mal wieder in beruflich in China. Das muss so das ca. 18-20 Mal gewesen sein. Was diesmal aber „auffällig“ war: es ist schon, sagen wir mal, ungewohnt, wenn man 11 Tage ohne soziale Netzwerke wie Google+, Facebook und Twitter auskommt (auskommen muss). Diese Seiten sind nämlich innerhalb Chinas nicht aufrufbar, jedenfalls aus keinem der Hotels, wo ich war.

Das Facebook & Co. in China geblockt werden mag ja schon länger so sein, diesmal ist es mir aber das erste Mal richtig aufgefallen. Was wohl eher daran liegt, dass ich bei der letzten Reise (Mitte 2012) besonders Google+ (und besonders die diversen Google+ Communities) noch wenig bis gar nicht genutzt habe.

Letztendlich ist es natürlich (für mich) nicht schlimm, dass die genannten sozialen Netzwerke nicht funktionieren - ich bin ja nicht drauf angewiesen. Aber ungewohnt ist es trotzdem, da es sonst halt „normal“ ist, dass ich ein- bis zweimal am Tag Google+ und Twitter abfrage.

Störend war dann schon eher, dass blogspot.com (die von Google betriebene Blogplattform) auch komplett geblockt ist - ich hätte schon gerne zwischendurch was gebloggt...

Interessant ist übrigens, dass Twitter via Andriod App und Datenroaming funktioniert, und zwar uneingeschränkt. Da Datenroaming im Ausland (und besonders in der Ländergruppe 3, zu der China gehört) bei T-Mobile mit 0,69 €/50 kB + 0,49 € Tag aber nur teuer ist, ist das sicherlich auch keine Option, um regelmäßig zu tweeten.

Na ja, was aber angenehm war, ist, dass 5-Sterne Hotels in China echt preiswert sind, zumindest außerhalb der ganz großen Städte wie Shanghai, Beijing, Guangzhou etc. („kleine” Städte haben in China übrigens immer noch ein paar Millionen Einwohner...). Im Schnitt haben wir für ein 5-Sterne Hotel so rund 70,- €/Nacht inkl. Frühstück bezahlt. Und 5-Sterne heißt hier nicht irgendwelche Fake-Sterne. Die Hotels sind alle auf internationalem Niveau. Gut, wenn man schon keine sozialen Netzwerke nutzen kann braucht man halt andere Annehmlichkeiten ;-)

Sonntag, 25. August 2013

sostore - eine simple Objekt-Datenbank für Python

Der Python Cheeseshop ist schon ein echte Fundgrube - zumindest mir geht es so, dass man da was sucht und dann zufällig auf was ganz anderes stößt, was man zwar eigentlich nicht braucht, aber trotzdem interessant ist.

Neulich bin ich so auf sostore gestoßen. Der Name steht für "SQLite Object Store" und das Projekt beschreibt sich als "An absurdly simple object "database" for Python".

Der Name ist vielleicht etwas irreführend weil: sostore speichert nicht wirklich Objekte (im Sinne von Python-Objekten), sondern "nur" Python Dictionaries.  Gespeichert wird dabei in eine SQLite Datenbank. Das Modul besteht nur aus zwei Dateien und hat keine Abhängigkeiten außer Python selber.

Dieser Blogeintrag beschreibt die Nutzung der zur Zeit aktuellste, stabilen Version 0.3.
(Nachtrag 17.9.2013: es gibt inzwischen die Version 0.4. Ein Update zu diesem Blogpost gibt es hier: Link)

Wie andere Python-Module auch lässt sich sostore via pip installieren:

$ pip install sostore

Danach steht das Modul unter dem Namen sostore zur Verfügung:

>>> import sostore

Die einzige Klasse, mit der man als Nutzer interagiert, heißt Collection. Diese enthält alle Daten und stellt alle Funktionen bereit.

Als erstes wird eine neue Collection angelegt:

>>> c = sostore.Collection('people')

Per Voreinstellung wird die im Hintergrund laufende SQLite-Datenbank als "in-memory" angelegt. Wer Daten persistent speichern möchte, der muss explizit das db-Argument angeben:

>>> c2 = sostore.Collection('people2', db='people.db')

Eine dritte Möglichkeit ist, beim Anlegen einer Instanz einer Collection als Argument eine bestehende DB-Connection anzugeben. Details hierzu sind in den Docstrings von sostore zu finden.

Als erstes werden der Collection ein paar Datensätze hinzugefügt:

>>> d = {'name':'Peter', 'surname':'Punk', 'job':'musician'}
>>> c.insert(d)
{'job': 'musician', '_id': 1, 'surname': 'Punk', 'name': 'Peter'}
>>> c.insert({'name':'Peter', 'surname': 'Pan', 'job': 'fairyhero'})
{'job': 'fairyhero', '_id': 2, 'surname': 'Pan', 'name': 'Peter'}
>>> c.insert({'name':'Otto', 'surname': 'Normal', 'job': 'lawyer'})
{'job': 'lawyer', '_id': 3, 'surname': 'Normal', 'name': 'Otto'}
>>> c.insert({'name':'Volker', 'surname': 'Racho', 'job': 'musicien'})
{'job': 'musicien', '_id': 4, 'surname': 'Racho', 'name': 'Volker'}


Wie zu sehen ist, wird für jedes hinzugefügt Objekt das Objekt sowie die automatisch angelegt ID (welches das Objekt in der SQLite-Datenbank als Primärschlüssel hat) zurück gegeben. Wer möchte, kann auch eine zufällige ID erzeugen, indem bei insert zusätzlich das Argument randomize=True angibt.

Das 'Aktualisieren eines Objekts innerhalb der Collection ist natürlich auch möglich. Im folgenden wird der Rechtschreibfehler beim Job des 4. Datensatzes korrigiert:

>>> d = c.get(4)
>>> d['job'] = 'musician'
>>> c.update(d)
{u'job': 'musician', '_id': 4, u'surname': u'Racho', u'name': u'Volker'}


Das Löschen eines Datensatzes erfolgt wie folgt:

>>> c.remove(3)

Die Anzahl der Datensätze in der Collection liefert count

>>> c.count
3


sostore bietet verschiedene Möglichkeiten, die Daten auszulesen. Um alle Datensätze zu sehen, genügt der Befehl:

>>> c.all()
[{u'job': u'musician', '_id': 1, u'surname': u'Punk', u'name': u'Peter'}, {u'job': u'fairyhero', '_id': 2, u'surname': u'Pan', u'name': u'Peter'}, {u'job': u'musician', '_id': 4, u'surname': u'Racho', u'name': u'Volker'}]


Aber natürlich sind die Datensätze auch einzeln selektierbar. Wer die ID kennt, kann sich diese Daten wie folgt anzeigen lassen:

>>> c.get(1)
{u'job': u'musician', '_id': 1, u'surname': u'Punk', u'name': u'Peter'}


Es ist auch möglich, mehr als eine ID anzugeben:

>>> c.get_many([1, 2])
[{u'job': u'musician', '_id': 1, u'surname': u'Punk', u'name': u'Peter'}, {u'job': u'fairyhero', '_id': 2, u'surname': u'Pan', u'name': u'Peter'}]


Optional kann man auch zusätzlich die Felder angeben, die zurück geliefert werden sollen:

>>> c.get_many([1, 2], fields='surname')
[{u'surname': u'Punk', u'name': u'Peter'}, {u'surname': u'Pan', u'name': u'Peter'}]


Das Argument field=... funktioniert übrigens auch beim weiter oben gezeigten Befehl all().

Nun besteht bei "real-life" Applikation natürlich auch öfters die Notwendigkeit, Daten anhand von Werten in den Datensätzen zu finden. Dies funktioniert so:

>>> c.find_one('surname', 'Punk')
{u'job': u'musician', '_id': 1, u'surname': u'Punk', u'name': u'Peter'}


Diese Funktion liefert immer nur den ersten Treffer zurück, wie der folgenden Befehl zeigt:

>>> c.find_one('name', 'Peter')
{u'job': u'musician', '_id': 1, u'surname': u'Punk', u'name': u'Peter'}


Jetzt gibt es aber zwei Datensätze mit dem Feld "name=Peter" in unserer Collection. Um alle Datensätze, die einem Suchkriterium entsprechen, zu finden, dient der Befehl:

>>> c.find_field('name', 'Peter')
[1, 2]


Das Ergebnis ist eine Liste von IDs. find_field kennt als optionales Argument noch compare_function, welches als Wert eine Vergleichsfunktion enthalten kann. Details findet man in den Docstrings.

Zwei weitere Funktionen von Collection sind random_entry() und random_entries(count=X), welche einen bzw. X zufällige gewählte Datensätze zurück liefern.

Das SQLite Object Store ist mit Sicherheit kein komplexes Modul. Aber es kann doch recht praktisch sein, wenn man Python-Dicts bzw. JSON-Objekt Speichern und Durchsuchen möchte. Außerdem bietet sostore die Möglichkeit die Daten persistent zu sichern.