Огляд скриптовых мов - Python
Приклади збереження даних Приклади збереження данихУ порівнянні з pickle або YAML для ініціалізації роботи з ZODB потрібно написати на парі рядків програмного коду більше, але як тільки сховище...
Контактні дані Київ, Мясницкая вул., 35
Телефон: +38 (044) 997 - 93 - 19
Факс: +38 (044) 999 - 99 - 91
Використання Shelve
Єдина відмінність між використанням shelve і простого словника полягає в тому, що об'єкт shelve створюється за допомогою методу shelve. ореп, а не шляхом створення екземпляра класу diet або за допомогою фігурних дужок.

Ще одна відмінність полягає в тому, що при використанні shelve по завершенні роботи з даними необхідно викликати метод close об'єкта shelve. В об'єкта shelve є пара особливостей. Про першу з них ми вже згадували: по завершенні роботи з даними необхідно викликати метод close. Якщо цього не зробити, то будь-які зміни, які були зроблені в об'єкті shelve, не будуть збережені. Нижче приводиться приклад втрати даних через те, що об'єкт shelve не закривається.

Отже, необхідно викликати метод close для всіх об'єктів shelve, уміст яких ви міняєте, і які вам хотілося б зберегти. Інша особливість стосується змінюваних об'єктів. Запам'ятаєте, що змінюваними об'єктами називаються такі об'єкти, значення яких можна змінювати без повторного присвоювання цього значення змінної. У такому поводженні немає нічого дивного або несподіваного. У дійсності ця особливість shelve описана в документації. Проблема полягає в тому, що модифікація змінюваних об'єктів, що зберігаються, не сприймаються за замовчуванням.

Однак існує пари способів, що дозволяють обійти цей недолік. Перший з них спеціалізований і узконаправленный, другий - широкий і всеосяжний. Список, до якого був доданий елемент, зберігся. Другий, широкий і всеосяжний підхід укладається в зміні прапора writeback об'єкта shelve. Дотепер ми демонстрували виклик методу shelve, open з єдиним параметром - ім'ям файлу сховища. Але цей метод може приймати ще й інші параметри, одним із яких є прапор writeback.

Якщо в прапорі writeback передане значення True, всі записи в об'єкті shelve, до яких виконувався обіг, кэшируются в пам'яті й потім зберігаються при виклику методу close. Цей прийом може виявитися зручним при роботі зі змінюваними об'єктами, але за це доводиться платити. Оскільки всі об'єкти, до яких провадився обіг, кэшируются й потім зберігаються при закритті об'єкта (незалежно від того, змінювалися вони чи ні), обсяг використовуваної пам'яті й час на запис у файл будуть рости пропорційно числу об'єктів у сховище, до яких провадився доступ.

Тому, якщо у вас є велика кількість об'єктів у сховище, до яких доводиться звертатися, то краще не встановлювати прапор writeback у значення True. Як ми й сподівалися, зміни були збережені. Модуль shelve пропонує простий спосіб збереження даних. У ньому є пара недоліків, але в цілому це дуже корисний модуль. YAML: Залежно від того, кому задається питання, ви можете почути різні тлумачення абревіатури YAML, наприклад: "YAML ain't markup language" (YAML - це не мова розмітки) або "yet another markup language" (ще одна мова розмітки).
Служба аутентификации Служба аутентификацииОдне із самих удалих визначень, з якими нам доводилося зіштовхуватися, приводиться у Википедии: "прикладний протокол, що дозволяє звертатися до служби каталогів, що працює поверх протоколу TCP/IP". Як приклад...
Веб додатка Веб додаткаОдне з поліпшень, яке можна було б внести в цей додаток, -це реалізувати сортування в порядку, зворотному поточний. Зробити це досить просто, але ми залишимо реалізацію цієї можливості читачам. Як ще одне поліпшення...
Запуск сценарію Запуск сценаріюЦе в точності відповідає нашим очікуванням. Тепер спочатку спробуємо запустити сценарій, що додає новий запис, а потім знову запустимо сценарій, що витягає дані. Цей приклад ідентичний попередньому прикладу, де використовувався метод store,...
Створення звітів Створення звітівКрім того, ми могли б розширити цей сценарій і відшукувати запису з обсягом використання 80 відсотків, 70 відсотків і видавати попередження по досягненні цих рівнів. Такий сценарій легко можна було б об'єднати, наприклад, с...
 
(c) Copyright