2015-09-03 3 views
-1

Я не уверен насчет наилучшего способа приблизиться к этому. Скажем, у меня есть таблица «виджета» с идентификаторами полей, «имя», «размер», «цвет», с 10 000 строк.Python SQLAlchemy Несколько запросов

Когда я загружаю веб-страницу, мне часто нужно искать сотни виджетов (по id) и возвращать одно или несколько связанных полей.

После меня сеанс создание базы данных, лучше практика, чтобы сделать что-то вроде:

thiswidget = session.query(Widget).filter(Widget.id=X) 

Каждый раз, когда мне нужен кусок данных, или я должен захватить все данные вперед один раз, скажем так :

widgetsdict = {} 
for widget in session.query(Widget): 
    widgets[widget.id] = (widget.name, widget.size, widget.color) 

Тогда каждый раз, когда мне нужно искать что-то, просто сделать:

thiswidget = widgetsdict[X] 

Первый метод намного проще, но неплохо ли постоянно просить базу данных снова и снова?

+0

Потому что это будет зависеть от данных и его природе, то лучше всего это профиль для конкретной рабочей нагрузки? –

ответ

1

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

Redis или memcached обычно используются для этой цели. Они оба действуют как процессы, которые запускаются на клиентской машине, которую можно вызвать для сохранения и извлечения данных. Вам нужно будет настроить локальный сервер и соответствующую библиотеку python.

кода вы пишете в питоне необходимо сделать следующее:

  • проверяет кэш для ключа
  • Если None вернулся, дб запроса
  • результата Хранить в кэше, установите разумные экспирации

Кэширование программного обеспечения

redis

memcached

Смежные вопросы