>>>> import time
>>>> key = 'now you see it'
>>>> conn.set(key, 'but not for long')
>True
>>>> conn.expire(key, 5)
>True
>>>> conn.ttl(key)
>5
>>>> conn.get(key)
>b'but not for long'
>>>> time.sleep(6)
>>>> conn.get(key)
>>>>
Команда expireat() указывает, что действие ключа истекает в заданное время эпохи Unix. Это может оказаться полезным для того, чтобы кэш оставался свежим и чтобы ограничить сессии авторизации.
Серверы NoSQL, перечисленные здесь, могут работать с данными, объем которых превышает объем доступной памяти, и многие из них требуют использования нескольких компьютеров. В табл. 8.6 показаны наиболее популярные серверы и их библиотеки Python.
Таблица 8.6. Базы данных NoSQL
Сайт | Python API |
---|
Cassandra | pycassa |
CouchDB | couchdb-python |
HBase | happybase |
Kyoto | kyotocabinet |
MongoDB | mongodb |
Riak | riak-python-client |
Наконец, существует особая категория баз данных для полнотекстового поиска. Они индексируют все, поэтому вы легко можете найти то стихотворение, в котором говорится о ветряных мельницах и гигантских головках сыра. Вы можете увидеть популярные примеры таких баз данных с открытым исходным кодом и их Python API в табл. 8.7.
Таблица 8.7. Полнотекстовые базы данных
Сайт | Python API |
Lucene | pylucene |
Solr | SolPython |
ElasticSearch | pyes |
Sphinx | sphinxapi |
Xapian | xappy |
Whoosh | Написан на Python, уже содержит API |
1. Присвойте строку 'This is a test of the emergency text system' переменной test1 и запишите переменную test1 в файл с именем test.txt.
2. Откройте файл test.txt и считайте его содержимое в строку test2. Совпадают ли строки test1 и test2?
3. Сохраните следующие несколько строк в файл books.csv. Обратите внимание на то, что, если поля разделены запятыми, вам нужно заключить поле в кавычки, если оно содержит запятую:
>author,book
>J R R Tolkien,The Hobbit
>Lynne Truss,"Eats, Shoots & Leaves"
4. Используйте модуль csv и его метод DictReader, чтобы считать содержимое файла books.csv в переменную books. Выведите на экран значения переменной books. Обработал ли метод DictReader кавычки и запятые в заголовке второй книги?
5. Создайте CSV-файл books.csv и запишите его в следующие строки:
>title,author,year
>The Weirdstone of Brisingamen,Alan Garner,1960
>Perdido Street Station,China Miéville,2000
>Thud!Terry Pratchett,2005
>The Spellman Files,Lisa Lutz,2007
>Small Gods,Terry Pratchett,1992
6. Используйте модуль sqlite3, чтобы создать базу данных SQLite books.db и таблицу books, содержащую следующие поля: title (text), author (text) и year (integer).
7. Считайте данные из файла books.csv и добавьте их в таблицу book.