[{"name": "red leicester", "price": 1.0}, {"name": "wensleydale", "price": 2.2}]
Records предлагает инструмент для командной строки, который экспортирует данные с помощью SQL:
$ records 'SELECT * FROM cheese' yaml — url=sqlite:///mydb.db
- {name: red leicester, price: 1.0}
- {name: wensleydale, price: 2.2}
$ records 'SELECT * FROM cheese' xlsx — url=sqlite:///mydb.db > cheeses.xlsx
Библиотеки для работы с базами данных NoSQL
Существует целая вселенная баз данных not only SQL («не только SQL») — это понятие применимо к любой базе данных, не являющейся традиционной. Если вы заглянете в PyPI, то можете запутаться, поскольку увидите несколько десятков пакетов Python со схожими именами.
Мы рекомендуем искать сведения о том, какая библиотека больше всего подходит для продукта, на основном сайте проекта для Python (например, поищите в Google «Python site: vendorname.com»). Большая часть библиотек предоставляет Python API и руководство для быстрого старта. Рассмотрим несколько примеров.
• MongoDB — это распределенное хранилище документов. Вы можете рассматривать его как гигантский словарь Python (может находиться в кластере), имеющий собственный фильтр и язык запросов. Для получения API для Python обратитесь к странице https://docs.mongodb.com/getting-started/python/.
• Cassandra — это распределенное хранилище таблиц. Предоставляет возможность быстрого поиска и может работать с широкими таблицами, но не предназначено для выполнения объединений — его функция заключается в том, чтобы иметь дубликаты представлений для данных, ключи для которых содержатся в разных столбцах. Для получения более подробной информации об API для Python обратитесь к странице http://www.planetcassandra.org/apache-cassandra-client-drivers/.
• HBase — это распределенное хранилище столбцов (в этом контексте «хранилище для столбцов» означает, что данные хранятся в виде <идентификатор строки, имя столбца, значение>, что позволяет работать с очень разреженными массивами вроде наборов данных, получаемых от ссылок from и to для сайтов Всемирной паутины). Хранилище создано на основе распределенной файловой системы Hadoop. Для получения более подробной информации об API для Python обратитесь к странице https://hbase.apache.org/supportingprojects.html.
• Druid (http://druid.io/) — это распределенное хранилище столбцов, предназначенное для сбора (и опционального объединения перед сохранением) данных о событиях (в этом контексте «хранилище столбцов» означает, что столбцы можно упорядочить и отсортировать, а затем хранилище может быть сжато для получения более высокой скорости ввода/вывода и меньшего отпечатка). По ссылке https://github.com/druid-io/pydruid вы можете найти API для Python на GitHub.
• Redis — это распределенное хранилище, размещающее в памяти данные в формате «ключ-значение». Идея в том, чтобы снизить задержку, отказавшись от выполнения операций чтения с диска/записи на диск. Например, вы можете сохранять результаты выполнения частых запросов для более быстрого поиска в Сети. По адресу http://redis.io/clients#python приводится список клиентов Python для Redis, который указывает, что предпочитаемым интерфейсом является redis-py, а по ссылке https://github.com/andymccurdy/redis-py вы можете найти страницу redis-py.
• Couchbase (http://www.couchbase.com/) — еще одно распределенное хранилище документов, его API больше похож на SQL (по сравнению с API для MongoDB, который больше похож на JavaScript). По ссылке http://developer.couchbase.com/documentation/server/current/sdks/python-2.0/introduction.html вы можете найти Python SDK для Couchbase.
• Neo4j — база данных графов, предназначенная для хранения объектов, связанных подобием графов. По ссылке http://neo4j.com/developer/python/ вы можете найти руководство по Neo4j для Python.
• LMDB (Lightning Memory-mapped Database от Symas) (https://symas.com/products/lightning-memory-mapped-database/) — база данных, хранящая данные в формате «ключ-значение» в файле, отображаемом в памяти. Это означает, что файл необязательно читать с самого начала для того, чтобы дойти до того места, где хранятся данные, поэтому его производительность равна производительности хранилища в памяти. Привязки для Python находятся в библиотеке lmdb (https://lmdb.readthedocs.io/).
Приложение. Дополнительная информация
Сообщество Python
В глобальное сообщество пользователей Python входит немало доброжелательных людей.
Гвидо ван Россума (Guido van Rossum), создателя Python, зачастую называют BDFL (Benevolent Dictator for Life — великодушный пожизненный диктатор).
Миссия Python Software Foundation (PSF) — продвигать, защищать и развивать язык программирования Python, а также поддерживать и способствовать росту международного сообщества программистов Python. Для того чтобы узнать больше, обратитесь к основной странице PSF http://www.python.org/psf/.
PEP расшифровывается как Python Enhancement Proposal (предложение по улучшению Python). В таких протоколах описываются изменения в самом Python, а также в его стандартах. Те, кому интересно изучать историю Python или сам проект языка, найдут эти протоколы довольно любопытными (даже те из них, которые в итоге были отклонены). Существует три разновидности протоколов, они определены в PEP 1 (https://www.python.org/dev/peps/pep-0001).
• Стандарты. Описывают новую функциональность или реализацию.
• Информационные протоколы. Описывают проблемы проектов, общие положения или содержат информацию, полезную для сообщества.
• Процессы. Подобные протоколы описывают процессы, связанные с Python.
Крупными событиями в жизни сообщества Python являются конференции разработчиков. Две наиболее заметные — PyCon (проводится в США) и EuroPython (проводится в Европе). Полный список конференций см. по ссылке http://www.pycon.org/.
Существует несколько обязательных к прочтению протоколов.
• PEP 8 — руководство по стилю для кода Python (https://www.python.org/dev/peps/pep-0008). Прочтите его полностью. И следуйте ему. Инструмент pep8 вам поможет (https://pypi.python.org/pypi/pep8).
• PEP 20 — «Дзен Питона» (https://www.python.org/dev/peps/pep-0020). PEP 20 представляет собой список из 19 утверждений, которые кратко описывают философию, лежащую в основе Python.
• PEP 257 — соглашения для строк документации (https://www.python.org/dev/peps/pep-0257). PEP 257 содержит руководство по семантике и соглашения, связанные со строками документации.
По адресу http://www.python.org/dev/peps/ вы можете узнать еще больше.
Новые протоколы будет рассматривать сообщество — и после обширных дискуссий они будут приняты или отклонены. На рис. A.1 показано, что происходит, когда кто-то отправляет черновую версию протокола.
Рис. A.1. Обзор процесса рассмотрения протокола
Пользовательские группы — это места, где разработчики Python встречаются лично для того, чтобы выступить с докладом или поговорить об интересующих их аспектах Python. Список локальных пользовательских групп см. в «Википедии»: http://wiki.python.org/moin/LocalUserGroups.
Обучение Python
Рассмотрим справочные материалы, сгруппированные по уровню сложности и областям применения.
Для начинающих
• The Python Tutorial. Официальное руководство по Python (http://docs.python.org/tutorial/index.html). Рассматриваются все основы, предлагается «экскурсия» по языку и стандартной библиотеке. Рекомендуется для тех, кому нужно руководство по языку для быстрого старта.
• Python for Beginners. Руководство (http://thepythonguru.com/) предназначено для начинающих программистов. Подробно рассматриваются многие концепции Python. Вы научитесь продвинутым конструкциям Python вроде лямбда-выражений и регулярных выражений. Руководство заканчивается статьей How to access a MySQL db using Python («Как получить доступ к базе данных MySQL с помощью Python»).
• Learn Python. Это интерактивное руководство (http://www.learnpython.org/) — легкий способ познакомиться с Python. Использует подход, реализованный на популярном сайте Try Ruby, — этот ресурс представляет собой интерактивный интерпретатор Python, встроенный в сайт, что позволяет пройти все уроки, не устанавливая Python на своем компьютере.
• Python for You and Me. Эта книга (http://pymbook.readthedocs.org/) — отличный ресурс для изучения всех аспектов языка; подходит для всех, кто предпочитает учиться по традиционной книге, а не по руководству.
• Online Python Tutor. Сайт http://pythontutor.com/ предлагает визуальное пошаговое представление того, как работает ваша программа. Python Tutor помогает пользователям преодолеть фундаментальный барьер, мешающий изучению программирования, показывая, что происходит, когда компьютер выполняет каждую строку исходного кода.
• Invent Your Own Computer Games with Python. Книга (http://inventwithpython.com/) предназначена для тех, у кого нет опыта программирования. Каждая глава содержит исходный код игры, и эти примеры программ используются для демонстрации концепций программирования, что помогает читателю понять, как программы «выглядят».
• Hacking Secret Ciphers with Python. Книга (http://inventwithpython.com/hacking/) помогает новичкам освоить программирование на языке Python и шифрование. Содержит исходные коды разнообразных шифров, а также программы, которые могут их взломать.