Archive for the ‘Python’ Category

h1

Sqlite dump exportieren

Mai 10, 2009

Ich bin gerade dabei meine Test Sqlite Datenbank von Django zu exportieren um eine MySQL Datenbank auf dem Production Server benutzen zu können. Dafür musste ich ein Sql Dump erstellen der Sqlite3 Datei:

charly@lucy:~/py/django$ sqlite3 database.db .dump .quit >> database_dump.sql

Die Punkte vor „dump“ und „quit“ gehören dazu.


h1

Python Shell Einzeiler

Februar 18, 2009

Wenn ich mit der Shell arbeite mag ich am liebsten die Einzeiler. Ich weiß zwar noch nicht, ob das wirklich nützlich ist, aber eben gerade habe ich gelesen wie man Python als Einzeiler ausführt:

charly@lucy:~$ python -c ‚print „Hello World“‚

Wenn sowas jemanden interessiert, dann kann er sich auch hier: http://www.rosettacode.org/wiki/Shell_One_Liner den Spaß in einer ganzen Reihe von Programmiersprachen angucken. Am aller besten finde ich das Beispiel in C:

charly@lucy:~$ touch /tmp/T0.c /tmp/T && chmod 600 /tmp/T0.c /tmp/T && echo -e „#include<stdio.h>\nint main(){printf(\“Hello\\\n\“);return 0;}“ >/tmp/T0.c &&
>   gcc /tmp/T0.c -o /tmp/T && /tmp/T && rm -f /tmp/T0.c /tmp/T
Hello

h1

Ein paar Verändungen und mehr

Februar 8, 2009

Wie man unschwer sehen kann, haben wir unserem Blog ein neues Theme verpasst. Zum Einen, weil immer mehr Unzufriedenheit über das alte Theme aufkam und zum Anderen, weil wir ein individuelles Logo wollten, dass zum alten Theme nicht passte. Das ist aber erst der Anfang der Veränderungen.

Jetzt, wo wir zu fünft sind und der Blog sich doch einiger Besucher erfreut, arbeiten wir an einem etwas größeren Projekt. Zusammen wollen wir uns in Python mit Django eine eigene Blog-Software schreiben, da wir uns hier bei WordPress ziemlich gefangen fühlen. Allerdings befindet sich das ganze Projekt noch im Anfangsstadium und man wird sich noch eine ganze Weile gedulden müssen.

Bis dahin erscheinen hier natürlich weiterhin neue Artikel und wir hoffen auf viele Leser und deren Kommentare. =)

h1

Programmausgabe in Variable speichern Python

Februar 7, 2009

Die Ausgabe von einem Programm oder einem Prozess in einer Variable zu speichern ist in Python gar nicht so leicht, wie man das zuerst erwarten würde. Benutzen sollte man dafür das subprocess Modul, da os.system() nicht nur deprecated ist, sondern auch nicht sehr flexibel. Es gibt jegliche Ausgabe nämlich einfach auf der stdout aus. Besser geht es dagegen mit subprocess.Popen():

1 from subprocess import Popen, PIPE
2
3 output = Popen(„fortune„, stdout=PIPE).communicate()[0]
4 output = Popen([„programm„, „argument„], stdout=PIPE).communicate[0]

Weitere Infos zu subprocess gibt es hier: http://docs.python.org/library/subprocess.html

h1

Django 1.0 und django-tagging

Februar 3, 2009

Wer seinem Django Projekt eine gute App fürs Tagging hinzufügen möchte, hat sicher schon einmal etwas von django-tagging gehört.

Falls nicht: Django-tagging ist ein kleines Framework, welches das Arbeiten mit Tags innerhalb einer Django-Applikation verbessern soll. Es werden Funktionen bereitgestellt, wie das Erzeugen einer Tagcloud, das Browsen von Einträgen nach Tags und einiges mehr. Klingt gut oder? So wer sich nun denkt „ruck-zuck“ runtergeladen fertig…sollte lieber aufpassen. Denn ungünstigerweise arbeitet die aktuelle Version, welche auf der Projektseite angeboten wird, nicht mit Django 1.0 zusammen. Lediglich die Version im trunk, welche ihr euch per svn laden könnt, ist auf dem aktuellen Stand. Gut also das Ganze mit dem unten auf der Seite angegebenen checkout runterladen (hier ist folgendes zu beachten: falls euer Django-Projekt sich auch in einer svn Versionskontrolle befindet, ist es nicht sinnvoll das checkout für django-tagging innhalb dieses Arbeitsverzeichnisses durchzuführen <– Notiz an mich selbst xD).
So, nachdem ihr alles enpackt habt und mit Superuser Rechten das setup.py Skript ausgeführt habt,

sudo python setup.py install

könnt ihr nun das Verzeichnis tagging unter build/lib/ in euer Djangoprojekt einfügen.

Als nächstes solltet ihr django-tagging in der settings.py unter INSTALLED_APPS hinzufügen (hier ist darauf zu achten, auch ein Unterverzeichnis anzugeben, falls ihr den Ordner tagging in ein solches gelegt habt).

‚deinProjekt.tagging‘,

Nun könnt ihr auch schon eure models.py in der gewünschten App bearbeiten.

from django.db import models
from tagging.fields import TagField
from tagging.models import Tag

class BlogPost(models.Model):

    title = models.CharField(max_length=30)
    body = models.TextField()
    date_posted = models.DateField(auto_now_add=True)
    tags = TagField()

    def set_tags(self, tags):
        Tag.objects.update_tags(self, tags)

    def get_tags(self, tags):
        return Tag.objects.get_for_object(self)

Dabei müsst ihr auch wieder auf die include-Pfade achten, falls ihr tagging in einem Unterverzeichnis zu liegen habt.
So, nachdem ihr diese Models erstellt habt, könnt ihr „syncdb“ ausführen und schon sollte alles funktionieren.

ACHTUNG: Falls ihr schon eine bestehende Datenbank habt, wird Django die Änderungen an den Models nicht übernehmen. Um das zu erreichen tut ihr folgendes:

$ python manage.py dbshell

> ALTER TABLE deineApp_deinModel ADD COLUMN tags varchar;

Danach sollte alles soweit funktionieren. Zur Funktionalität von django-tagging werde ich mich jetzt nicht auslassen.
Dazu könnt ihr zum Beispiel hier nachlesen.

h1

Django Cheatsheet

Januar 29, 2009

Hab gerade eine recht nützliche Übersicht, bestehend aus 2 A4 Seiten, über Django gefunden. Es ist vielleicht nicht der Renner, aber einen Blick auf jeden Fall wert:

http://www.mercurytide.co.uk/news/article/django-cheat-sheet/

h1

XChat Plugins/Scripte

Januar 12, 2009

Da ich jetzt ab und zu auch mal im IRC mit XChat herumlunger, habe ich mal nachgeschaut, wie man sein XChat noch weiter anpassen und konfigurieren kann. Dabei bin ich darauf gestoßen, dass es Schnittstellen für 8 verschiedene Script- bzw. Programmiersprachen gibt (z.B. Python, Perl, C/C++).

Man kann sich also ein kleines Modul schreiben, dass dann auf bestimmte Nachrichten reagiert und vieles mehr – ok, so genau weiß ich es noch nicht =P

Die Dokumentationen und ein Überblick über die verfügbaren Implementierungen gibt es hier.

Und hier gibt es sogar einen ganzen Forumsbereich über XChat-Plugins und  Scripten.