Welche Datenbankschnittstelle?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
cos4
User
Beiträge: 23
Registriert: Freitag 30. November 2007, 21:17

Ich frage mich welche Datenbankschnittstelle für mich die richtige für mich ist.
Ich suche eine Datenbank zur Speicherung von Daten aus kleineren Projekten. Eigentlich hatte ich sqlite im Auge aber mich stört, dass es keine foreign keys gibt. Eigentlich braucht man die doch ständig, wie kommen soviele Leute ohne aus? Verlassen die sich einfach darauf, dass die Daten stimmen?
Wenn man zb mehrere Exemplare eines Buches hat, hat man doch schon 2 Tabellen,eine davon mit einem foreign key.
Welche db würdet ihr mir empfehlen? Ein seperat laufender Server wäre etwas overkill da finde ich die sqlite Lösung besser. Auch Tipps zu sqlite sind willkommen schließlich kommen viele ja auch damit aus.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Sqlite kennt ja FKs nur nicht als Constraint, einsetzen kannst du sie ja trotzdem.
cos4
User
Beiträge: 23
Registriert: Freitag 30. November 2007, 21:17

Aber sie haben dann keine Wirkung oder?
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

cos4 hat geschrieben:Aber sie haben dann keine Wirkung oder?
Benötigst du denn einen Constraint? (Oder besser gefragt, ist dir der Unterschied zwischen einem Constraint und einem normalen Feld überhaupt klar).
Bei einer übersichtlichen Datenstruktur ist doch das Fehlen der Constraints überhaupt kein Probelm. Du hast halt keine automatischen UPDATE und DELETE Kaskadierungen, aber das kann man ja auch manuell implementieren.
cos4
User
Beiträge: 23
Registriert: Freitag 30. November 2007, 21:17

Ich brauche das ha letztlich vor allem um sicher sein zu können, dass die Datensätze stimmen. Sonst kann ich doch durch verborgene programmierfehler inkosistente dbs erzeugen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

cos4 hat geschrieben:Sonst kann ich doch durch verborgene programmierfehler inkosistente dbs erzeugen.
Das kannst du ja so oder so, egal ob du Foreign Key Constraints hast oder nicht.

Ich bin grad dabei SQL-Kram aufzugeben und in die Key/Value-Welt abzuwandern :D
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

cos4 hat geschrieben:Ich brauche das ha letztlich vor allem um sicher sein zu können, dass die Datensätze stimmen. Sonst kann ich doch durch verborgene programmierfehler inkosistente dbs erzeugen.
Bei einer einfachen Datenstruktur und mit ein bisschen Nachdenken sollte das halt dann nicht passieren ;-)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

cos4 hat geschrieben:Ich brauche das ha letztlich vor allem um sicher sein zu können, dass die Datensätze stimmen. Sonst kann ich doch durch verborgene programmierfehler inkosistente dbs erzeugen.
Hallo cos4!

Wenn die Datenbank komplexer werden sollte und du die Aufgabe der Validierung mehr der Datenbank überlassen möchtest, dann musst du ein Datenbankmanagementsystem wie z.B. PostgreSQL benutzen.

Wenn du Daten in einer Datenbankdatei abspeichern möchtest, die die Möglichkeit bietet, darauf per SQL zuzugreifen, dann nimm SQLite. Was ich damit sagen möchte: Du musst auf Fremdschlüssel verzichten, wenn du SQLite verwenden möchtest. Du musst auf einfache Verteilbarkeit verzichten, wenn du PostgreSQL verwenden möchtest.

Ich handhabe das so:

Für Client-Server-Anwendungen nehme ich PostgreSQL. Das ist ideal dafür geeignet. Kann mit vielen gleichzeitigen Verbindungen sehr gut umgehen und kümmert sich darum, dass nur gewünschte Personen auf gewisse Daten zugreifen können. Mit dieser Datenbank habe ich alles was mein Datenbankprogrammierer-Herz begehrt.

Wenn ich ein performantes Speicherformat für Desktopanwendungen (z.B. Rezepteverwaltung, lokale Adressendatenbank, ...) benötige, das sehr gut nach Daten durchsucht werden kann und gut von Client zu Client ausgetauscht werden kann, dann nehme ich SQLite -- mit der Einschränkung, dass SQLite keine Fremdschlüssel kann.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
cos4
User
Beiträge: 23
Registriert: Freitag 30. November 2007, 21:17

Danke. Dann werde ich wohl sqlite nehmen. Habe noch gesehen, dass man sowas ähnliches wie fks wohl mit triggern machen kann, dazu gibts sogar nen Codegenerator
http://rcs-comp.com/site/index.php/view ... _generator
paddg 42
User
Beiträge: 9
Registriert: Montag 23. November 2009, 17:27

Der Thread hat mir sehr geholfen.

Nur eine Frage: Gibt es PostgreSQL auch als Modul für Python 3.0?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

paddg 42 hat geschrieben:Nur eine Frage: Gibt es PostgreSQL auch als Modul für Python 3.0?
Ja, pg8000 hat auch eine Python 3-Version.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
paddg 42
User
Beiträge: 9
Registriert: Montag 23. November 2009, 17:27

Danke. Ich werds in meinem Projekt nutzen.
Antworten