Работа с данными

10. Работа с данными #

Работа с данными — важная часть разработки приложений. Python предлагает множество библиотек для работы с различными форматами данных и базами.


10.1. JSON и YAML #

Работа с JSON #

JSON (JavaScript Object Notation) — популярный формат для хранения и обмена данными.

Чтение и запись JSON #
import json

# Запись данных в файл
data = {"name": "Alice", "age": 30, "is_student": False}
with open("data.json", "w") as file:
    json.dump(data, file)

# Чтение данных из файла
with open("data.json", "r") as file:
    loaded_data = json.load(file)
print(loaded_data)  # {'name': 'Alice', 'age': 30, 'is_student': False}
Работа со строками JSON #
# Преобразование Python-объекта в строку
json_string = json.dumps(data)
print(json_string)  # {"name": "Alice", "age": 30, "is_student": false}

# Преобразование строки JSON в Python-объект
parsed_data = json.loads(json_string)
print(parsed_data)  # {'name': 'Alice', 'age': 30, 'is_student': False}

Работа с YAML #

YAML (YAML Ain’t Markup Language) — человекочитаемый формат данных.

Установка PyYAML #
pip install pyyaml
Пример работы #
import yaml

# Запись данных в YAML
data = {"name": "Alice", "age": 30, "is_student": False}
with open("data.yaml", "w") as file:
    yaml.dump(data, file)

# Чтение данных из YAML
with open("data.yaml", "r") as file:
    loaded_data = yaml.safe_load(file)
print(loaded_data)  # {'name': 'Alice', 'age': 30, 'is_student': False}

10.2. CSV и Excel #

Работа с CSV #

CSV (Comma-Separated Values) — формат табличных данных.

Чтение и запись CSV #
import csv

# Запись данных в CSV
data = [["Name", "Age"], ["Alice", 30], ["Bob", 25]]
with open("data.csv", "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerows(data)

# Чтение данных из CSV
with open("data.csv", "r") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

Работа с Excel #

Для работы с Excel используется библиотека openpyxl.

Установка библиотеки #
pip install openpyxl
Пример работы #
from openpyxl import Workbook, load_workbook

# Создание Excel-файла
wb = Workbook()
sheet = wb.active
sheet.title = "Sheet1"
sheet.append(["Name", "Age"])
sheet.append(["Alice", 30])
sheet.append(["Bob", 25])
wb.save("data.xlsx")

# Чтение Excel-файла
wb = load_workbook("data.xlsx")
sheet = wb.active
for row in sheet.iter_rows(values_only=True):
    print(row)

10.3. Работа с базами данных (SQLite, SQLAlchemy) #

SQLite #

SQLite — легковесная реляционная база данных, встроенная в Python.

Работа с SQLite #
import sqlite3

# Подключение к базе данных
conn = sqlite3.connect("example.db")
cursor = conn.cursor()

# Создание таблицы
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)")

# Добавление данных
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Alice", 30))
conn.commit()

# Чтение данных
cursor.execute("SELECT * FROM users")
for row in cursor.fetchall():
    print(row)

conn.close()

SQLAlchemy #

SQLAlchemy — мощная ORM для работы с базами данных.

Установка #
pip install sqlalchemy
Пример работы #
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

# Определение модели
class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

# Настройка подключения
engine = create_engine("sqlite:///example.db")
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()

# Добавление данных
new_user = User(name="Alice", age=30)
session.add(new_user)
session.commit()

# Чтение данных
for user in session.query(User).all():
    print(user.name, user.age)

10.4. Сериализация данных (pickle) #

Библиотека pickle #

pickle используется для сохранения и загрузки Python-объектов.

Сохранение объекта #
import pickle

data = {"name": "Alice", "age": 30}

# Сохранение объекта в файл
with open("data.pkl", "wb") as file:
    pickle.dump(data, file)
Загрузка объекта #
# Загрузка объекта из файла
with open("data.pkl", "rb") as file:
    loaded_data = pickle.load(file)
print(loaded_data)  # {'name': 'Alice', 'age': 30}
Работа с байтовыми строками #
# Сериализация в строку
serialized = pickle.dumps(data)
print(serialized)

# Десериализация из строки
deserialized = pickle.loads(serialized)
print(deserialized)

Рекомендации #

  1. Используйте json и yaml для текстовых данных, которые нужно обменивать между системами.
  2. Применяйте csv и openpyxl для табличных данных.
  3. Для работы с базами данных используйте ORM (например, SQLAlchemy) для удобства и читабельности.
  4. Используйте pickle для сохранения сложных Python-объектов, но избегайте его для данных из ненадежных источников (из-за уязвимостей безопасности).