- PVSM.RU - https://www.pvsm.ru -
В своей работе у меня, время от времени, возникает желание изменить поведение того или иного инструмента: сделать работу с ним привычней, API прозрачней и т. п. Так случилось и когда мне в наследство достался проект, где в качестве хранилища использовался Redis. Несомненно, Python имеет достаточно библиотек для удобной работы с Redis, однако вспоминая, что это именно key-value хранилище, мне не могла не прийти в голову мысль о том, как было бы замечательно работать с ним как с обычным Python-словарём (dict).
Вместо
>>> redis_obj.exist(key)
использовать
>>> key in redis_obj
Сохранять объекты привычным присваиванием:
>>> redis_obj['Planets'] = ['Mercury', 'Venus', 'Earth', 'Mars']
Так и родился на свет Dictator. Dictator имитирует методы класса dict, пряча интерфейс Redis от пользователя.
Установка крайне проста, как и множество Python библиотек, он доступен в Pypi
$ pip install dictator
Исходные коды с лицензией MIT забирать в хранилище [1] на GitHub.
Использовать Dictator крайне просто, однако инициализация объектов всё таки отлична от словаря (надо же знать куда подключаться):
>>> dc = Dictator(host='localhost', port=6379, db=0)
Далее с созданным объектом можно работать в привычной манере:
.set(key, value)
>>> dc.set('Planets', ['Mercury', 'Venus', 'Earth'])
>>> dc['Stars'] = ['Sun']
.get(key)
>>> dc['Stars']
['Sun']
>>> dc.get('Planets')
['Mercury', 'Venus', 'Earth']
Можно задать значение, на случай если по ключу key
не будет ничего найдено
>>> dc.get('Comets', 'No data')
'No data'
.update(other=None, **kwargs)
>>> dc.update({'Stars': ['Sun', 'Vega']})
>>> dc.update(Stars=['Sun'])
.pop(key, default=None)
>>> dc.pop('Stars')
['Sun']
>>> dc.pop('Comets')
.delete(key)
>>> dc.delete('Comets')
or
>>> del dc['Comets']
.keys()
and .values()
>>> dc.keys()
['Planets', 'Stars']
>>> dc.values()
[['Mercury', 'Venus', 'Earth']]
.items()
>>> dc.iterms()
[('Planets', ['Mercury', 'Venus', 'Earth'])]
и, конечно, итерация с помощью объекта-генератора:
.iterkeys()
.itervalues()
.iteritems()
И это не всё :)
Проект находится в начальной стадии, заботливо задокументирован и украшен.
Fork-и, pull-request-ы и другие issues приветствуются
Автор: Amka
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/196069
Ссылки в тексте:
[1] хранилище: https://github.com/amka/dictator
[2] Источник: https://habrahabr.ru/post/311820/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.