база данных в памяти на Python - PullRequest
22 голосов
/ 15 июня 2010

Я делаю несколько запросов в Python для большой базы данных, чтобы получить некоторую статистику из базы данных.Я хочу, чтобы эта статистика была в памяти, чтобы другие программы могли использовать ее, не заходя в базу данных.

Я думал о том, как их структурировать, и после попытки установить некоторые сложные вложенные словари я понял, что хорошим представлением будет таблица SQL.Однако я не хочу хранить данные обратно в постоянную базу данных.Существуют ли какие-либо реализации базы данных SQL в памяти, которые поддерживают запросы данных с синтаксисом SQL?

Ответы [ 3 ]

39 голосов
/ 15 июня 2010

SQLite3 может работать. Интерфейс Python поддерживает реализацию в памяти, которую предлагает SQLite3 C API.

Из спецификации:

Вы также можете указать специальное имя : memory: создать базу данных в оперативной памяти.

Это также относительно дешево с транзакциями, в зависимости от того, что вы делаете. Чтобы начать, просто:

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

Затем вы можете продолжить, как если бы вы использовали обычную базу данных.

В зависимости от ваших данных - если вы можете обойтись с помощью ключа / значения (строки, хэши, списки, наборы, отсортированные наборы и т. Д.) - Redis может быть другим вариантом для изучения (как вы упомянули Вы хотели поделиться с другими программами).

1 голос
/ 15 июня 2010

Думаю, тогда SQLite3 будет лучшим вариантом.

Если возможно, взгляните на memcached . (для пары «ключ-значение» светится быстро!)

ОБНОВЛЕНИЕ 1:

HSQLDB для таблиц SQL Like. (без поддержки Python)

0 голосов
/ 15 июня 2010

Вы можете использовать базу данных, например, SQLite .Строго говоря, это не память, но она довольно легкая и будет полностью отделена от вашей основной базы данных.

...