Übersicht

  gfsql
  Datenbank öffnen
  Buttons
  Menüs
  Einstellungen
  Arbeiten mit gfsql
  gfsql als Gadfly-Client
  Crash-Kurs SQL
  Befehle & Tastenkombinationen
  Installation
  Credits
  Startseite

gfsql

gfsql.pyw gfsql beruht auf gfplus -- der Gadfly-Shell! 
Gadfly ist eine relationale Datenbank mit SQL-Schnittstelle unter Python, sie wurde entwickelt von Aaron Watters. Gfplus ist eine textbasierte Gadfly-Shell von Jeff Berliner. gfsql bindet gfplus in eine Fensterumgebung unter Tkinter ein, Ziel ist ein einfache Arbeitsumgebung für Gadfly. Eine Beispielsitzung:

gfsql in Aktion

Im Fenster oben findet die Sitzung statt, hier werden SQL-Anweisungen eingegeben, GF> ist der gfsql-Prompt. Eine SQL-Anweisung wird immer mit einem Strichpunkt ; beendet, geht sie über mehrere Zeilen, so verändert sich der gfsql-Prompt zu  ...  , falls man zwischenzeitlich <F1> (=Befehl ausführen) gedrückt hat. Betätigen der RETURN- oder ENTER-Taste ergibt eine neue Zeile ohne den gfsql-Prompt GF>. Im unteren Fenster werden Ergebnisse von Anfragen dargestellt: Das sind beispielsweise diejenigen Datensätze, die die SELECT-Anfrage erfüllen. Zusätzlich werden im unteren Fenster Fehlermeldungen und alte Sitzungen angezeigt. In der blauen Titelzeile wird der Name der momentan geöffneten Datenbank angezeigt. Für die Umsetzung von gfsql wurden mehrere Tkinter-Routinen (tkSimpleDialog.py, tkDirectoryChooser.py) von Fredrik Lundh benutzt. 

<<<

Datenbank öffnen

über den Button , es öffnet sich folgendes Fenster:

Gadfly-Datenbanken haben die Endung '*.gfd', die Tabellen zu den gadfly-Datenbanken haben die Endung '*.grl'.

<<<

Buttons

Öffnet eine Datenbank
Zeigt die Tabellen der momentan geöffneten Datenbank in einem neuen Fenster an. Beachte: das Fenster ist kontextsensitiv
Schliesst die momentan geöffnete Datenbank, die Datenbank wird im aktuellen Zustand gespeichert!
Öffnet eine alte Sitzung im unteren Fenster, Befehle können über Markieren, Kopieren & Einfügen in das obere Fenster übernommen werden.
Führt den SQL-Befehl auf der momentan geöffneten Datenbank aus, alternativ: die Funktions-Taste <F4>
Gibt die letzte SELECT-Anfrage als Pretty-Print-Tabelle aus, alternativ: die Funktions-Taste <F8>
Der NEXT-Button führt beim Abarbeiten einer Datei von SQL-Befehlen den nächsten Befehl aus, normalerweise deaktiviert!
Vorheriger Befehl (alternativ: F5) bzw. nächster Befehl (alternativ: F6) für den internen Puffer der SQL-Befehle.

 

<<<

Menüs

Im Datei-Menü kann eine alte Sitzung geöffnet  oder eine aktuelle Sitzung gespeichert werden. Über SQL-Datei einlesen kann eine Text-Datei mit SQL-Befehlen geöffnet und abgearbeitet werden. Es können auch Original-Sitzungs-Dateien geöffnet werden. Der bearbeitete SQL-Befehl wird im Fenster oben angezeigt. Bewirkt der SQL-Befehl eine Ausgabe, so wird sie im unteren Fenster dargestellt. Die beiden Befehle Fenster oben bzw. unten leeren schaffen Übersicht. Der Befehl DB speichern & schliessen beendet gfsql und speichert die momentan geöffnete Datenbank Der Befehl Beenden beendet zwar gfsql, aber die momentan geöffnete Datenbank wird nicht gespeichert!
Neben Datenbank öffnen und schliessen, Befehl ausführen (alternativ: die Funktions-Taste <F4>), Tabellen zeigen, DB-Schema (zeigen) und Tabellendefinition zeigen kann auch eine neue Datenbank erstellt werden: Hierzu muss der Datenbank erst ein Name gegeben werden, danach kann man mit dem SQL-Befehl CREATE die Struktur der Tabellen (Relationen) eingeben. DB-Info öffnet ein Fenster mit statistischen Daten der momentan geöffneten Datenbank. Der Punkt History öffnet ein Unter-Menü, in dem die letzten fünf geöffneten Datenbanken angezeigt werden. Über SQL-Fragment wird ein Unter-Menü mit SQL-Code geöffnet, das entsprechende SQL-Fragment wird in das obere Fenster eingefügt, einfach ausprobieren! Über Lösche Befehlsliste wird der interne Puffer der SQL-Befehle (Tasten <F5> und <F6>) zurückgesetzt. Der Punkt: "Exportiere Datenbank" bewirkt den kompletten (!) Export der momentan geöffneten Datenbank als Textdatei, dagegen speichert "Dia-Export" das Datenbank-Schema (die CREATE-Befehle) als Textdatei. Mit Hilfe von autodia kann man mit dem Datenbank-Schema UML-Diagramme für Dia erzeugen. gfsql kann auch als Gadfly-Client im Client/Server-Modus benutzt werden.
In den Einstellungen kann auf die englische Konfiguration umgestellt werden. Daneben können die aktuellen Einstellungen angezeigt, geladen oder abgespeichert werden. Der Punkt "History-Liste neu laden" lädt die Liste der letzten fünf geöffneten Datenbanken neu, siehe beispielsweise die Datei gfsql_dblist.ini.
Das Hilfe-Menü
popup Daneben gibt es für das obere und das untere Fenster noch ein Popup-Menü: einfach im betreffenden Fenster auf die rechte Maustaste.

 

<<<

Einstellungen

Im Menü können über Einstellungen die aktuellen Einstellungen verändert werden, sie sind in der Datei "gfsql.ini" gespeichert:

Einstellungen

Im Punkt "Start-Sprache" kann die Sprache eingestellt werden, in der gfsql starten soll. Bei "locale" wird versucht, die Systemeinstellung zu benutzen. Gfsql kann als Gadfly-Client verwendet werden, hierzu kann zuerst die Verbindung mit dem Gadfly-Server überprüft werden (Empfohlen!). Dies bewirkt der Punkt "Verbindung testen".
Bei der "Schrittweisen Ausführung" geht es um die Ausführung von SQL-Dateien: sie können Befehl für Befehl ausgeführt werden (=schrittweise Ausführung!) oder eben komplett, d. h. alle SQL-Befehle aus der SQL-Datei werden ohne Unterbrechung abgearbeitet. Die schrittweise Ausführung kann mit der Esc-Taste abgebrochen werden. Die Strg-Taste holt den nächsten Befehl bei der schrittweisen Ausführung. Der Punkt "Fenster löschen" bewirkt beim Öffnen einer Datenbank das Leeren des oberen/unteren Fensters. Gleichzeitig wird auch die Historie der eingegebenen SQL-Befehle (Taste F5 bzw. F6) neu initialisiert, soll heißen: die ganze Geschichte beginnt von neuem . . .

<<<

Arbeiten mit gfsql

Aufruf: Doppelklick auf gfsql.pyw

Alternativ: unter Windows pythonw.exe gfsql.pyw
unter Linux: python gfsql.pyw
im gfsql-Verzeichnis aufrufen. Vergleiche unter Linux auch die einfache shell-Datei gfsql.sh (Pfad anpassen!)

Das Arbeiten mit gfsql wird über Markieren, Kopieren und Einfügen wesentlich erleichtert! Deshalb sollte man unbedingt Sitzungen sichern, die Sitzungen werden als Textdateien gespeichert. Beim Öffnen dieser Textdateien wird der Inhalt im unteren Fenster von gfsql angezeigt. Alternativ kann man über den Befehl SQL-Datei einlesen auch eine Sitzungsdatei im oberen Fenster abarbeiten lassen: die schrittweise Ausführung erlaubt eine Ausführung Befehl für Befehl. Sie kann mit der Esc-Taste abgebrochen werden. Die Strg-Taste führt den jeweils nächsten Befehl aus. Ist die schrittweise Ausführung in den Einstellungen ausgeschaltet, so werden alle SQL-Befehle aus der SQL-Datei ohne Unterbrechung vollständig abgearbeitet!

Es gibt in gfsql eine History-Funktion: über <F5> kann man die vorherigen Befehle abrufen, über <F6> geht es in die andere Richtung. Man gebe einfach mehrere Befehle im oberen Fenster ein und probiere dann <F5> beziehungsweise <F6>.
Wichtig: Die über SQL-Datei einlesen verarbeiteten SQL-Befehle werden in die History-Liste aufgenommen, können also über die Tasten <F5> beziehungsweise <F6> abgerufen werden. Über "Lösche Befehlliste" im Menü Datenbanken kann man die Befehlliste auf "Null" setzen, sprich neu initialisieren.

Über SQL-Fragment wird ein Unter-Menü mit (unvollständigem!) SQL-Code geöffnet:

SQL-Fragment

Das entsprechende SQL-Fragment wird in das obere Fenster eingefügt, muss aber noch nachbearbeitet werden :-)

Mit der Tastenkombination <F8> kann die jeweils letzte SELECT-Anfrage als Pretty-Print-Tabelle dargestellt werden, Beispiel (gleiche Abfrage wie oben !):

pretty print

Über Als HTML sichern kann man das Ergebnis der letzten SELECT-Anfrage auch als HTML-Datei abspeichern.

Den physikalisch belegten Speicher und die Anzahl der Datensätze bzw. der Tabellen erhält man über DB-Info im Menü Datenbanken:

DB-Info

Der Punkt History im Menü Datenbanken erlaubt den Zugriff auf die letzten fünf geöffneten Datenbanken.

Zur Arbeit mit commit & rollback: gfsql speichert Daten nicht sofort physikalisch auf der Festplatte (!), sondern behält die Daten im Speicher! Man muss deshalb gfsql zum Abspeichern des aktuellen Zustandes explizit auffordern, hierzu dient der Befehl commit. Beispiel:

GF> commit;

Beim Schliessen der Datenbank wird ebenfalls der aktuelle Zustand gespeichert, will man jedoch "zwischendrin" die Änderungen an der Datenbank rückgängig machen, so benutze man den Befehl rollback. Beispiel:

GF> rollback;

Die Datenbank wird dann zurückgesetzt auf den letzten gespeicherten Zustand, technisch ausgedrückt: die Transaktion wird abgebrochen. Andererseits hat man mit dem Befehl commit die Möglichkeit, einen Zwischenzustand bei der Arbeit mit einer Datenbank physikalisch zu sichern.

Welche Datentypen stehen in gfsql zur Verfügung? Da gfsql auf gadfly aufbaut, kann man folgende Datentypen benutzen:

Es fehlt also insbesondere ein Datentyp für die Uhrzeit und das Datum. Nebenbei: der Wert NULL steht in gfsql auch nicht zur Verfügung. Weitere "Unzulänglichkeiten":

Ansonsten ist der SQL-Standard relativ vollständig implementiert, näheres hierzu findet man in der Sprachbeschreibung von Aaron Watters.

<<<

gfsql als Gadfly-Client

Im Menü Datenbanken findet sich der Punkt: Gadfly-Client. Gadfly kann im Client/Server-Modus betrieben werden, hierbei kann man gfsql als Gadfly-Client benutzen. Dazu sind vier Angaben notwendig, die man vom Datenbank-Administrator erhält, der Gadfly im Server-Modus startet, Beispiel:

Wird beispielsweise der Gadfly-Server mit folgenden Angaben gestartet:

python gfserve.py 8888 test dbtest admin

(Bedeutung: starte gfserve.py mit der Datenbank test im Verzeichnis dbtest über den Port 8888 unter der Zugriffsberechtigung admin) so muss man sich folgendermaßen anmelden:

Statt der Netzwerkadresse 127.0.0.1 kann auch der Name des entsprechenden Hosts angegeben werden, hier also localhost. gfsql überprüft den Verbindungsaufbau (siehe Einstellungen), kommt keine Verbindung zustande, so wird eine Fehlermeldung ausgegeben:

Verbindung fehlgeschlagen!

Näheres zur Benutzung von Gadfly im Client-Server-Modus entnehme man der Originaldokumentation von A. Watters.

<<<

Crash-Kurs SQL

Hinweis: die folgenden beiden Abschnitte befinden sich auch in der Hilfe-Datei von gfsql unter dem Menü-Punkt Hilfe (alternativ <F1>).

Beispiele ( GF> ist der gfsql-Prompt):

 

!BEACHTE den Strichpunkt ; am Ende eines Befehls!

Ansonsten vergleiche man den SQL-Tutor.

<<<

Befehle & Tastenkombinationen

Befehle in gfsql:

<SQL Anweisung>; Eine SQL Anweisung in gfsql eingeben (mit ; beenden!)
desc <relation>; Zeigt alle Spalten einer Relation an
commit; Der aktuelle Zustand der Datenbank wird gesichert
rollback; Die Datenbank wird auf den letzten (!) gespeicherten Zustand zurückgesetzt

Tastenkombinationen in gfsql:

<F1> Öffnet das Hilfe-Fenster
<F4> SQL Anweisung (mittels gadfly) ausführen (alternativ: <Alt> + X)
<F5> Vorherige SQL-Anweisung abrufen (alternativ: <Alt> + P)
<F6> Nächste SQL-Anweisung abrufen (alternativ: <Alt> + N)
<F8> Letzte SELECT-Anfrage als PrettyPrint-Tabelle
(alternativ: <Alt> + T)
<Strg> Nächster Befehl bei der schrittweisen
Ausführung einer SQL-Datei
<Esc> Abbrechen der schrittweisen Ausführung
<Alt> + C Leert das obere Fenster

 

<<<

Installation

gfsql erfordert Python in der Version 2.0 aufwärts, Tkinter sowie die Tkinter-Erweiterung Tix.

Die Installation von gfsql umfasst folgende Schritte:

  1. Entpacken von gfsql.zip (Windows) bzw. von gfsql.tar.gz (Linux) in ein Unterverzeichnis, die zum Arbeiten mit gfsql notwendigen Dateien von Gadfly werden mitinstalliert, aber: Dies ist keine vollständige Version von Gadfly! Bei der Installation wird das Unterverzeichnis gmodule angelegt, in dem sich die Gadfly- und gfsql-Module befinden.

  2. Aufruf von gfsql.pyw: Beim ersten Start von gfsql.pyw erzeugt der Python-Interpreter zu den Python-Skripten im gfsql-Unterverzeichnis einen Zwischencode, so dass der erste Aufruf etwas länger dauert. Danach sollte es etwas schneller gehen :-)

Während der Installation werden keine Veränderungen in der Registry vorgenommen (oder sonstwo . . .). gfsql wurde getestet unter Windows 98, Windows NT 4.0, Windows XP und Linux. An dieser Stelle ein herzliches Danke Schön an die Schüler des Informatik-Grundkurses der Jahrgangsstufe 12/13 (Schuljahr 2001/2002) der Schule am Ried, ihr ward großartige Beta-Tester! Mir bleibt nur noch folgender

Hinweis: gfsql wurde vor allem zu didaktischen Zwecken geschrieben! Es ist nicht gedacht für die Entwicklung von großen & kritischen Datenbanken. Sondern: um SQL zu lernen . . .
Have Fun!

<<<

Credits

Many Thanks to

Da gfsql auf Gadfly beruht, steht auch gfsql unter der BSD-Lizenz.

<<<

    Feedback