Datenbank sqlite3 und datetime.datetime

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Ich interessiere mich für sqlite3 und habe im Kern nur eine Tabelle, die ich abfragen will, die aber große Datenmengen aufnehmen muss. Nachfolgend handelt es sich um Verständnisfragen (!). Ich habe eher konzeptionelle Fragen:

1.) Ich will in die Datenbank "2016-11-14 20:27:00" speichern, gibt es eine Möglichkeit Einträge gezielt nach Datum zu filtern, weil - wenn ich es richtig verstehe - das auch als Text gespeichert werden muss. Im Kern möchte ich Abfragen der Form "Nach dem Datum A und Vor dem Datum B" laufen lassen können. Geht das? Wie wird das gelöst?

Antwort - Scheint zu gehen: http://stackoverflow.com/questions/1695 ... yyy-format

2.) Alle Datenbank-Einträge werden eine ID haben, die ich aber nicht selbst festlege, die die einzelne Datenzeile eindeutig festlegt und nicht einfach nur um 1 erhöht wird. Kann ich oder muss ich so eine Spalte irgendwie markieren? Kann ich irgendwie sicherstellen, dass ein bestehender Eintrag upgedatet und nicht neu angelegt wird? Ich vermute (meine Frage), dass ich erst prüfen muss, dass der Wert enthalten ist und falls ja, dann UPDATE (?).

3.) Kann ich alle Werte einer Spalte - einfach - ziehen, also um z. B. alle IDs zu bekommen und abgleichen zu können?

Ich merke an: Ich schrecke noch vor SQLAlchemy zurück, was auch an einem fehlenden (?) Deutschen Schnellstart-Guide (oder einer Präsentation) liegen kann. Zu Requests hatte ich seinerzeit leichten Zugang, nachdem ich eine übersichtliche Anleitung gefunden habe. Ich habe wenig Erfahrungen mit der Konzeption und Anlage von Datenbanken (habe ich praktisch nie machen müssen), d. h. sqlite3 erscheint mir für meinen Kenntnisstand und meine Aufgabe gerade geeignet.

Mir ist hier im Unterforum schon aufgefallen, dass i. d. R. zu SQLAlchemy geraten wird.

4.) Vereinfacht es obige Probleme sehr oder ist es nur (?) eine andere Art mit verschiedenen Datenbanken umzugehen?
BlackJack

@pixewakb: 1.) Ich würde auf Python-Seite `datetime.datetime`-Objekte verwenden. Man kann `sqlite3` irgendwie sagen dass es zumindest TIMESTAMP-Spalten automatisch von/nach diesen Objekten umwandeln soll. Einer der Gründe warum ich SQLAlchemy gerne verwende ist, dass ich immer vergesse was man dafür machen muss und SQLAlchemy das automatisch macht *und* Werte in DATETIME- und DATE-Spalten auch sinnvoll umwandelt. :-)

2.) Das wäre dann eine Spalte die man als PRIMARY KEY deklariert. Man könnte auch einfach den Wert anlegen und wenn das wegen PRIMARY KEY nicht geht, aktualisieren. Geschmacksfrage und eventuell auch davon abhängig wie oft man so eine Kollision erwartet.

3.) Ja.

4.) Ich benutze es fast immer weil es gegenüber der DB API 2.0 eine bessere Abstraktionsschicht bietet, man also einfacher tatsächlich vom Datenbanksystem unabhängigen Code schreiben kann, und weil man programmatisch Abfragen erstellen kann. Wahlweise mit oder ohne ORM.
Antworten