26.02.2014 Aufrufe

LinuxUser Skripten und Coden (Vorschau)

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Praxis<br />

LaTeX <strong>und</strong> Datenbanken<br />

3 Druckvorlagen samt passender Schnittmarken mit wenigen Kommandos – die<br />

richtige Toolchain aus Datenbank, Skriptsprache <strong>und</strong> LaTeX macht es möglich.<br />

Listing 2<br />

01 import csv<br />

02 erzeugeHeader()<br />

03 ersteZeile = 1<br />

04 personenliste = csv.<br />

reader(open('personen.csv'),<br />

delimiter=',', quotechar= '"')<br />

05 for eintrag in personenliste:<br />

06 teilnehmer, rolle,<br />

projektname = eintrag<br />

07 if not ersteZeile:<br />

08 seitenumbruch()<br />

09 else:<br />

10 ersteZeile = 0<br />

11 erzeugeNamensschild(<br />

teilnehmer, rolle, projektname)<br />

12 erzeugeFooter()<br />

Listing 3<br />

01 from pg8000 import DBAPI<br />

In den Zeilen 5 <strong>und</strong> 6 fasst das Skript jeweils<br />

zwei einzelne Seiten auf einem<br />

Blatt zusammen – zunächst übereinander<br />

(Zeile 5) <strong>und</strong> darauf folgend nebeneinander<br />

(Zeile 6). Das Ergebnis besteht<br />

aus vier Namensschildern samt passender<br />

Schnittmarken pro Blatt, sodass sich<br />

dieses direkt für den Druck sowie den<br />

maschinellen Schnitt eignet 3 . In den<br />

Zeilen 8 <strong>und</strong> 9 entsteht mittels der Daten<br />

aus der Datenbank die Liste der Teilnehmer<br />

sowie eine passende Übersicht.<br />

Im Folgenden sehen wir uns nun die<br />

Skripte zum Erzeugen der Namensschilder<br />

<strong>und</strong> der Teilnehmerliste genauer an.<br />

Das Erzeugen der Namensschilder übernimmt<br />

das Python-Skript namensschilder.py<br />

(Listing 2). In Schritt 1 erstellt es<br />

die LaTeX-Kopfzeilen („Präambel“, Zeile<br />

2). Anschließend entnimmt es die Daten<br />

aus der angegebenen Datei (Zeile 4)<br />

<strong>und</strong> erzeugt daraus für jeden Datensatz<br />

ein Namensschild (Zeile 5 bis 11). Am<br />

Ende fügt das Skript in Zeile 12 noch die<br />

LaTeX-Fußzeilen hinzu.<br />

Um jedes Namensschild auf einer separaten<br />

Seite auszugeben, sorgen die<br />

Zeilen 7 bis 10 für einen Seitenumbruch<br />

ab dem zweiten Eintrag <strong>und</strong> vor jedem<br />

Namensschild. Zum Steuern dient die<br />

Variable ersteZeile (Zeile 3), die einfach<br />

den Wert null erhält, nachdem das Skript<br />

den ersten Datensatz aus der Quelle gelesen<br />

hat (Zeile 10).<br />

02 connectionId = DBAPI.connect(host="server",<br />

database="veranstaltung", user="tom", password="jerry")<br />

03 cursor = connectionId.cursor()<br />

04 cursor.execute("SELECT teilnehmer, rolle, projektname FROM<br />

personenliste")<br />

05 for datensatz in cursor:<br />

06 teilnehmer, rolle, projektname = datensatz<br />

07 ...<br />

08 cursor.close()<br />

09 connectionId.close()<br />

44 www.linux-user.de<br />

06.2013

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!