- Лучшие способы сохранения данных в Python
- Как сохранить данные в Python?
- 1. Использование сочинения для хранения объектов Python
- 2. Использование SQLite3 для постоянного сохранения данных в Python
- 3. Использование SQLICENCT в качестве постоянного кэша
- Заключение
- Заметки Python #17: Формат хранения данных
- Какие еще форматы данных?
- Формат CSV
- Как выглядят данные записанные в формате CSV?
- Как прочитать данные из файла .csv?
- Как отделить заголовки от содержимого в CSV?
- Метод DictReader
- Как записать данные в файл формата .csv?
- Метод writerows
- Метод DictWriter
- Формат JSON
- Как прочитать JSON-формат в Python?
- Как записать JSON-формат в Python?
- Как преобразуются данные при сериализации JSON?
- Формат YAML
- Как считать YAML-формат?
- Запись данных в .yaml-файл
Лучшие способы сохранения данных в Python
Привет читатели! В этом руководстве мы будем иметь дело с тем, как мы можем эффективно сохранять данные в Python.
Автор: Pankaj Kumar
Дата записи
Привет читатели! В этом руководстве мы будем иметь дело с тем, как мы можем эффективно сохранять данные в Python.
Как сохранить данные в Python?
Когда мы работаем над приложениями Python, мы будем иметь дело с объектами Python напрямую, так как все является объектом в Python. Давайте посмотрим на некоторые способы, которыми мы можем легко хранить их!
1. Использование сочинения для хранения объектов Python
Если мы хотим держать вещи простыми, мы можем использовать модуль сортировки, который является частью стандартной библиотеки для сохранения данных в Python.
Мы можем «сортировать» объекты Python в пиловый файл, который мы можем использовать для сохранения данных/загрузки данных.
Поэтому, если у вас есть пользовательский объект, который вам может потребоваться хранить/извлекать, вы можете использовать этот формат:
Если вы запускаете этот скрипт, вы заметите файл под названием data.pickle , который содержит сохраненные данные.
Чтобы снова загрузить один и тот же объект, мы могли бы использовать Pickle.Load () используя аналогичную логику.
Мы только что успешно восстановили наши старые данные!
2. Использование SQLite3 для постоянного сохранения данных в Python
Если вы хотите использовать постоянную базу данных для сохранения данных в Python, вы можете использовать SQLite3 Библиотека, которая предоставляет вам API для использования баз данных SQLite.
Опять же, это часть стандартной библиотеки, поэтому нет необходимости устанавливать ничего!
Однако, поскольку это реляционная база данных, вы не можете напрямую давить объекты Python, как в Парил Отказ
Вам придется сериализовать и десериализировать их в соответствующие типы баз данных.
Посмотрите на некоторые примеры, вы можете обратиться к этой статье на использовании SQLite в Python.
3. Использование SQLICENCT в качестве постоянного кэша
Если вы найдете использование SQLite3 Слишком утомительно, есть гораздо лучшее решение! Вы можете использовать sqlized Для хранения постоянных данных, и это внутренне использует SQLite3 база данных для обработки хранилища.
Вы должны установить этот пакет, используя PIP:
Единственное, что вы должны иметь в виду, это то, что вам нужно использовать Ключ: значение отображения для хранения/извлечения данных, как и словарь!
Вот очень простой пример, используя MyClass пример.
Действительно, мы просто загрузили наш объект Python! Если вы заметите, sqlized создаст базу данных cache.sqlite3 автоматически, если оно не существует, а затем используйте его для хранения/загрузки данных.
Заключение
В этой статье мы смотрели, как мы можем использовать Python для хранения данных по-разному.
Источник
Заметки Python #17: Формат хранения данных
Продолжая тему клиент-серверных приложений, затронем такой момент, как формат хранения данных, которые идут от этого самого клиенту к этому самому серверу.
Какие еще форматы данных?
Клиент-серверная архитектура подразумевает обмен данными, которые обрабатываются на стороне сервера и возвращаются в определенном виде клиенту. Такие данные обычно структурированы и сохраняются в форматах, которые поддерживают его CSV, JSON или YAML. Процесс обработки пакетов данных и их последующее сохранение называют сериализацией данных. . Вышеперечисленные форматы могут применяться для сохранения данных в табличном виде (логи, сетевые параметры, результаты обработки данных в приложениях и т.д.)
Формат CSV
CSV (comma-separated value) — формат передачи данных в виде таблиц. Данные можно извлечь из самой таблицы — отдельная строка файла соответствует строке таблицы, а разделителем может быть не только запятая, но и любые другие.
Как выглядят данные записанные в формате CSV?
Это определенный набор списков. Первый — названия столбцов, все остальные — значения:
Как прочитать данные из файла .csv?
В Python есть специальный модуль для работы с этим форматом — csv. Чтобы прочитать данные с файла используется метод reader. В качестве параметра ей передается ссылка на файл (объект), с которого будет считана информация
import csv
with open(‘alco_data.csv’) as file:
read_file = csv.reader(file)
for data in read_file:
print(data)
import csv
with open(‘alco_data.csv’) as file:
read_file = csv.reader(file)
print(list(read_file))
Как отделить заголовки от содержимого в CSV?
Чтобы отделить заголовки от содержимого можно использовать метод next
import csv
with open(‘alco_data.csv’) as file:
read_file = csv.reader(file)
headers = next(read_file)
print(‘Headers: ‘, headers)
for data in read_file:
print(data)
Метод DictReader
В модуле csv есть отдельный метод для вывода данных таким образом, чтобы каждой строке таблицы соответствовал словарь (dict), в котором в котором элементы представляют собой связку
import csv
with open(‘alco_data.csv’) as file:
read_file = csv.DictReader(file)
for data in read_file:
print(data)
import csv
with open(‘alco_data.csv’) as file:
read_file = csv.DictReader(file)
for data in read_file:
print((data[‘store’], data[‘name’]))
Как записать данные в файл формата .csv?
По аналогии с чтением данных, в Питоне, с помощью модуля csv, можно записать данные формата csv в файл. Сделать это можно с помощью метода csv.writer(file)
data = [[‘store’, ‘alcohol’, ‘name’, ‘description’],
[‘magnit’, ‘Whisky’, ‘William Lawsons’, ‘Spiced, str’],
[‘ashan’, ‘Whisky’, ‘William Lawsons’, ‘Spiced, str’],
[‘perecrestok’, ‘Whisky’, ‘William Lawsons’, ‘Original, str’],
[‘pyaterochka’, ‘Whisky’, ‘William Lawsons’, ‘Original, str’]]
with open(‘alco_data_write.csv’, ‘w’) as file:
datawrite = csv.writer(file)
for info in data:
datawrite.writerow(info)
with open(‘alco_data_write.csv’) as file:
print(file.read())
Правилом хорошего тона считается указывать кавычки для каждого значения. Их можно не указывать, но часто это приветствуется:
data = [[‘store’, ‘alcohol’, ‘name’, ‘description’],
[‘magnit’, ‘Whisky’, ‘William Lawsons’, ‘Spiced, str’],
[‘ashan’, ‘Whisky’, ‘William Lawsons’, ‘Spiced, str’],
[‘perecrestok’, ‘Whisky’, ‘William Lawsons’, ‘Original, str’],
[‘pyaterochka’, ‘Whisky’, ‘William Lawsons’, ‘Original, str’]]
with open(‘alco_data_write.csv’, ‘w’) as file:
datawrite = csv.writer(file, quoting=csv.QUOTE_NONNUMERIC)
for info in data:
datawrite.writerow(info)
with open(‘alco_data_write.csv’) as file:
print(file.read())
Метод writerows
Метод writecows создан для передачи объекта (список, кортеж), в которых содержаться данные, в качестве аргумента. Это избавит от построчного записывания данных в файл.
data = [[‘store’, ‘alcohol’, ‘name’, ‘description’],
[‘magnit’, ‘Whisky’, ‘William Lawsons’, ‘Spiced, str’],
[‘ashan’, ‘Whisky’, ‘William Lawsons’, ‘Spiced, str’],
[‘perecrestok’, ‘Whisky’, ‘William Lawsons’, ‘Original, str’],
[‘pyaterochka’, ‘Whisky’, ‘William Lawsons’, ‘Original, str’]]
with open(‘alco_data_write.csv’, ‘w’) as file:
datawrite = csv.writer(file, quoting=csv.QUOTE_NONNUMERIC)
datawrite.writerows(data)
with open(‘alco_data_write.csv’) as file:
print(file.read())
Метод DictWriter
DictWriter — метод из модуля csv, которые работает только со словарями Python версии от 3.6 — необходимо явно указывать порядок следования столбцов в файле. За это отвечает параметр fieldnames. Можно указать свой разделитель с помощью параметра delimiter
data = [[‘store’, ‘alcohol’, ‘name’, ‘description’],
[‘magnit’, ‘Whisky’, ‘William Lawsons’, ‘Spiced, str’],
[‘ashan’, ‘Whisky’, ‘William Lawsons’, ‘Spiced, str’],
[‘perecrestok’, ‘Whisky’, ‘William Lawsons’, ‘Original, str’],
[‘pyaterochka’, ‘Whisky’, ‘William Lawsons’, ‘Original, str’]]
with open(‘alco_data_write.csv’, ‘w’) as file:
datawrite = csv.writer(file, delimiter=’/’)
for info in data:
datawrite.writerow(info)
with open(‘alco_data_write.csv’) as file:
print(file.read())
Формат JSON
JSON — популярный в web’е формат передачи, хранения и обмена данными. Конечно же в Питоне тоже есть специальный модуль для работы с такими данными — json. Как выглядит обычный JSON-файл? Что у него внутри?
<
«action»: «msg»,
«to»: «morisk»,
«from»: «me»,
«encoding»: «ascii»,
«message»: «Buy Whisky»
>
Как прочитать JSON-формат в Python?
Для чтения данных из JSON-объектов используются методы load и loads модуля json. Первый считывает файл в JSON-формате и возвращает python-объекты. Второй — отвечает за считывание строки в JSON-формате и тоже возвращает python-объекты
#метод load (обычное чтение json-файла)
with open(‘alco_json.json’) as file:
data = json.load(file)
print(type(data)) #класс — словарь
for section, commands in data.items():
print(section)
print(commands)
#метод loads (чтение json-строк)
with open(‘alco_json.json’) as file:
filedata = file.read()
print(type(filedata)) #класс — строка
object = json.loads(filedata)
print(type(object)) #класс — словарь
for section, commands in object.items():
print(section)
print(commands)
Как записать JSON-формат в Python?
Методы dump и dumps из модуля json помогают нам записать данные в формате json на Питоне. Dump сохраняет python-объект в файл .json. Dumps — возвращает строку в JSON-формате — например, для последующей ее передачи в API. Методы dump() и dumps() пользуются одними и теми же аргументами ключевых слов. Формат JSON может не совпадать с исходным python-форматом. Например, кортежи при записи в JSON конвертируются в списки.
with open(‘alco_json.json’, ‘w’) as file:
file.write(json.dumps(jsonwrite))
with open(‘alco_json.json’) as file:
print(file.read())
jsonwrite = < #метод dump
«action»: «msg»,
«to»: «morisk»,
«from»: «me»,
«encoding»: «ascii»,
«message»: «Buy Whisky»
>
with open(‘alco_json.json’, ‘w’) as file:
json.dump(jsonwrite, file, sort_keys=True, indent=2)
with open(‘alco_json.json’) as file:
print(file.read())
Как преобразуются данные при сериализации JSON?
Python | JSON |
dict | object |
list, tuple | array |
str | string |
int, float | number |
True | true |
False | false |
None | null |
JSON | Python |
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
При использовании формата JSON есть ограничение: нет возможности сохранить словарь, где в качестве ключей — кортежи
Формат YAML
YAML («Ain’t Markup Language») — формат сериализации данных, который считают максимально user-friendly по синтаксису и удобству форматирования данных. Структура и синтаксис практически такой же, как на Python — используются отступы, сделанные с помощью пробелов (использовать tab нельзя). Список в YAML — структурирован. При этом каждый элемент записывается в своей строке и маркируется символом «- » (обязательно с пробелом после него). Все строки набора должны иметь одинаковую величину отступа. Все эти же правила справедливы и для типа данных «словарь» (dict). В YAML так же могут быть комбинации элементов в словаре (dict) каждому ключу будет соответствовать набор элементов в виде списка (list)
# список с элементами (строки)
[‘action’, ‘to’, ‘from’, ‘encoding’, ‘message’]
# структурированный список
— action
— to
— from
— encoding
— message
# строки в словаре
# словарь в виде блока
‘action’: ‘msg’
‘to’: ‘account_name’
# спецсимволы в строках
command: «action | to»
# примеры комбинаций элементов
# словарь с элементами-списками
message:
— msg_1
— msg_2
— msg_3
to:
— account_1
— account_2
— account_3
# список словарей
— action: msg_1
to: account_1
— action: msg_2
to: account_2
Как считать YAML-формат?
Для работы с YAML, как и с другими типами данных, в Python заготовлен отдельный модуль — yaml
with open(‘alco_yaml_listdict.yaml’) as file:
data = yaml.load(file, Loader=yaml.FullLoader)
print(data)
Запись данных в .yaml-файл
Как записать обычный python-объект в .yaml-файл? Предположим, что нам нужен записать словарь с элементами в виде списка в формате YAML:
alco_list = [‘lawsons’,
‘captain morgan’,
‘bells’]
zapivon_list = [‘coca-cola’,
‘pepsi’,
‘not_zapivon’]
Источник