2010-06-15 13 views
19

ich auf einer große Datenbank einige Abfragen in Python machte einige Statistiken aus der Datenbank zu erhalten. Ich möchte diese Statistiken im Speicher haben, damit andere Programme sie verwenden können, ohne zu einer Datenbank zu gehen.In-Memory-Datenbank in Python

Ich dachte an, wie sie zu strukturieren, und einige komplizierte verschachtelte Wörterbücher nach dem Versuch zu gründen, erkannte ich, dass eine gute Darstellung eine SQL-Tabelle sein würde. Ich möchte die Daten jedoch nicht in der persistenten Datenbank speichern. Gibt es In-Memory-Implementierungen einer SQL-Datenbank, die das Abfragen der Daten mit SQL-Syntax unterstützt?

Antwort

30

SQLite3 funktionieren könnte. Die Python-Schnittstelle does support Die In-Memory-Implementierung, die die SQLite3 C-API bietet.

Von der Spezifikation:

Sie können auch den speziellen Namen liefern : Speicher: eine Datenbank im RAM zu erstellen.

Es ist auch relativ billig mit Transaktionen, je nachdem, was Sie tun. Um loszulegen, nur:

import sqlite3 
conn = sqlite3.connect(':memory:') 

Sie können dann fortfahren, als ob Sie eine regelmäßige Datenbank verwenden würden.

Abhängig von Ihren Daten - wenn Sie mit Schlüssel/Wert (Strings, Hashes, Listen, Sets, sortierte Sets, etc.) durchkommen können - Redis könnte eine andere Option sein (wie Sie erwähnten, dass Sie mit teilen wollten) andere Programme).

1

ich denke, wird SQLite3 dann die beste Option sein. Wenn möglich

, werfen Sie einen Blick auf memcached. (Für Schlüssel-Wert-Paar, Beleuchtung schnell!)

UPDATE 1:

HSQLDB für SQL Wie Tabellen. (Kein Python-Unterstützung)

+0

Zurück zu diesem ein paar Jahre später, Redis ist auch eine sehr praktikable Option mit viel mehr Flexibilität als Memcache für diese Art von Sache (es sei denn SQL ist ein Muss haben). –

0

Sie könnten möglicherweise eine Datenbank wie SQLite verwenden. Es ist nicht streng genommen im Speicher, aber es ist ziemlich leicht und würde völlig getrennt von Ihrer Hauptdatenbank sein.

+1

SQLite3-Datenbanken können nur im Speicher geöffnet werden. Es ist einer der großen Vorteile von SQLite3. –

+0

Das ist gut zu wissen, danke für den Tipp. –