welcome: please sign in
location: SQLite

Was ist SQLite?

SQLite ist eine C-Bibliothek die eine Datenbankengine implementiert. Das besondere ist dabei, dass es ohne Server auskommt, die Datenbank wird in einer einzigen Datei gespeichert. Auf diese Datei wird mit C-Funktionen, denen man einen SQL Query uebergibt, zugegriffen.

Was bei SQLite fehlt, sind viele (es gibt nur das noetigste) Funktionen zu Datenmanipulation. (z. B. select sqrt(col) from table) Das ist aber kein besonders grosses Problem, da die Bibliothek die Funktion sqlite3_create_function() mitbringt, die es erlaubt SQL functionen selbst zu definieren. Das ermoeglicht es sogar maechtigere Funktionen zu benutzen, als mit anderen Datenbanken.

SQLite und Perl

Um mit Perl auf SQLite-Datenbanken zuzugreifen wird DBI und DBD::SQLlite3 benoetigt. DBD::SQLite3 bietet auch ein Interface zu sqlite3_create_function(). Das sieht dann so aus:

$dbh->func('strftime', 2, sub {
  POSIX::strftime($_[0], localtime($_[1]))
}, 'create_function');

Nun kann man Timestamps in der Datenbank speichern und schon beim select so umwandeln wie man sie braucht:

SELECT strftime('%Y-%m-%d', timestamp) AS date, name FROM table ORDER BY 1;

SQLite (last edited 2008-07-14 09:55:41 by localhost)