2012-03-25 1 views
2

Ich schreibe eine Musik-Katalog-Anwendung mit PyQt mit GUI zu zeigen. Ich habe ein Problem mit der Auswahl der Datenbank-Engine. Es gibt einfach zu viele Möglichkeiten. kann ich verwenden:
-PyQt build-in QSQL
-sqlite3
-SQLAlchemy (Elixir)
-SQLObject
-Python DB-API
Wahrscheinlich gibt es weit mehr Möglichkeiten, diese Liste ist, was ich habe von Google (Ich bin offen für alle anderen Vorschläge). Wenn ich mich entscheide, ein ORM zu verwenden, welches Datenbanksystem sollte ich verwenden? MySql, PostgreSQL oder andere? Ich kenne einige MySql, aber ich habe eine Menge Gutes über PostgreSQL gehört, auf der anderen Seite scheint sqlite3 in Desktop-Anwendungen am beliebtesten zu sein. Ich wäre für jeden Rat dankbar.Datenbanken und Python

EDIT: Eine Anwendung soll unter Linux und Windows arbeiten. Ich denke, die Datenbankgröße sollte etwa 100-10k Einträge sein.

+0

Auf welche Plattform zielen Sie? Welche Datenbankgröße erwarten Sie? – Ali

+0

Gut lesen [orm vs Ebene sql] (http://stackoverflow.com/q/494816/205528) – Dikei

Antwort

4

SQLite3 hat den Vorteil, dass es mit Python ausgeliefert wird, so dass keine Installation erforderlich ist. Es hat eine Reihe von netten Funktionen (einfach zu bedienen, Portabilität, ACID, Speicher in einer einzigen Datei, und es ist ziemlich schnell).

SQLite ist ein guter Startpunkt. Pythons DB API stellt eine konsistente Schnittstelle zu allen gängigen DBs sicher, so dass es nicht schwer sein sollte, später zu einer anderen Datenbank zu wechseln, wenn Sie es sich anders überlegen.

Die Entscheidung, ob ein ORM verwendet werden soll, ist schwieriger und es ist schwieriger, später Ihre Meinung zu ändern. Wenn Sie den DB-Zugriff in nur wenigen Funktionen isolieren können, benötigen Sie möglicherweise überhaupt kein ORM.

+0

Danke. SQLite3 wird wahrscheinlich meine Wahl sein. Ich bin nur neugierig, welche BD wäre besser, wenn aus irgendeinem Grund kann SQLite3 nicht verwenden? MySql oder PostgreSQL? Eine andere Frage: Wie wäre es mit QSql-Objekt? Ich weiß, es ist schwer zu entscheiden, aber im Allgemeinen ist es schneller/langsamer als Pythons DB API? – fenuks

+5

@fenuks Nun, wenn Sie nicht wissen, welcher für Ihre Aufgaben besser ist - es gibt eine fette Chance, dass der Unterschied Ihnen egal ist. Wählen Sie einen nach dem Zufallsprinzip, und wenn Sie mit der Leistung stecken bleiben (sagen Sie in 2-3 Jahren), werden Sie genau wissen, welche Art von Leistung Sie suchen. Nur dann können Sie sich für eine * bessere * Datenbank entscheiden. – bezmax

1

Sie wären besser dran mit einer ORM (Object Relational Library) Bibliothek, die es Ihnen erlauben würde, auf eine OOP-Weise zu entwerfen und sich um die Datenbank kümmern zu können. Es gibt viele Vorteile; aber einer der größten ist, dass Sie nicht an eine Datenbank-Engine gebunden sind. Sie können sqlite für die Entwicklung verwenden und Ihr Projekt mit Postgresql, Mysql und sogar Oracle D kompatibel halten, abhängig von einer einzelnen Änderung eines Konfigurationsparameters.

Vor diesem Hintergrund ist mein ORM der Wahl SQLAlchemy, aufgrund seiner Reife für sein bekannt und verwendet (aber andere könnten auch gut).