Автор оригинала: Pankaj Kumar.
Привет читатели! В этом руководстве мы будем иметь дело с тем, как мы можем эффективно сохранять данные в Python.
Как сохранить данные в Python?
Когда мы работаем над приложениями Python, мы будем иметь дело с объектами Python напрямую, так как все является объектом в Python. Давайте посмотрим на некоторые способы, которыми мы можем легко хранить их!
1. Использование сочинения для хранения объектов Python
Если мы хотим держать вещи простыми, мы можем использовать модуль сортировки, который является частью стандартной библиотеки для сохранения данных в Python.
Мы можем «сортировать» объекты Python в пиловый файл, который мы можем использовать для сохранения данных/загрузки данных.
Поэтому, если у вас есть пользовательский объект, который вам может потребоваться хранить/извлекать, вы можете использовать этот формат:
import pickle class MyClass(): def __init__(self, param): self.param = param def save_object(obj): try: with open("data.pickle", "wb") as f: pickle.dump(obj, f, protocol=pickle.HIGHEST_PROTOCOL) except Exception as ex: print("Error during pickling object (Possibly unsupported):", ex) obj = MyClass(10) save_object(obj)
Если вы запускаете этот скрипт, вы заметите файл под названием data.pickle
, который содержит сохраненные данные.
Чтобы снова загрузить один и тот же объект, мы могли бы использовать Pickle.Load ()
используя аналогичную логику.
import pickle class MyClass(): def __init__(self, param): self.param = param def load_object(filename): try: with open(filename, "rb") as f: return pickle.load(f) except Exception as ex: print("Error during unpickling object (Possibly unsupported):", ex) obj = load_object("data.pickle") print(obj.param) print(isinstance(obj, MyClass))
Выход
10 True
Мы только что успешно восстановили наши старые данные!
2. Использование SQLite3 для постоянного сохранения данных в Python
Если вы хотите использовать постоянную базу данных для сохранения данных в Python, вы можете использовать SQLite3
Библиотека, которая предоставляет вам API для использования баз данных SQLite.
Опять же, это часть стандартной библиотеки, поэтому нет необходимости устанавливать ничего!
Однако, поскольку это реляционная база данных, вы не можете напрямую давить объекты Python, как в Парил
Отказ
Вам придется сериализовать и десериализировать их в соответствующие типы баз данных.
Посмотрите на некоторые примеры, вы можете обратиться к этой статье на использовании SQLite в Python.
3. Использование SQLICENCT в качестве постоянного кэша
Если вы найдете использование SQLite3
Слишком утомительно, есть гораздо лучшее решение! Вы можете использовать sqlized
Для хранения постоянных данных, и это внутренне использует SQLite3
база данных для обработки хранилища.
Вы должны установить этот пакет, используя PIP:
pip install sqlitedict
Единственное, что вы должны иметь в виду, это то, что вам нужно использовать Ключ: значение
отображения для хранения/извлечения данных, как и словарь!
Вот очень простой пример, используя MyClass
пример.
from sqlitedict import SqliteDict class MyClass(): def __init__(self, param): self.param = param def save(key, value, cache_file="cache.sqlite3"): try: with SqliteDict(cache_file) as mydict: mydict[key] = value # Using dict[key] to store mydict.commit() # Need to commit() to actually flush the data except Exception as ex: print("Error during storing data (Possibly unsupported):", ex) def load(key, cache_file="cache.sqlite3"): try: with SqliteDict(cache_file) as mydict: value = mydict[key] # No need to use commit(), since we are only loading data! return value except Exception as ex: print("Error during loading data:", ex) obj1 = MyClass(10) save("MyClass_key", obj1) obj2 = load("MyClass_key") print(obj1.param, obj2.param) print(isinstance(obj1, MyClass), isinstance(obj2, MyClass))
Выход
10 10 True True
Действительно, мы просто загрузили наш объект Python! Если вы заметите, sqlized
создаст базу данных cache.sqlite3
автоматически, если оно не существует, а затем используйте его для хранения/загрузки данных.
Заключение
В этой статье мы смотрели, как мы можем использовать Python для хранения данных по-разному.