Найти в Дзене
Анастасия Софт

🛠️ Как использовать Python для импорта и экспорта данных в Excel из/в базы данных

Или как подружить Excel и SQL, чтобы не сойти с ума Ты наверняка сталкивался с этим: И вот ты вручную копируешь, вставляешь, сохраняешь в .csv, а потом колдуешь в SQL. Есть способ проще — Python. С его помощью можно: pip install pandas openpyxl sqlalchemy Представим, у нас: А ещё Excel-файл новые_заказы.xlsx с новыми строками. import pandas as pd
# Загружаем Excel-файл
df = pd.read_excel('новые_заказы.xlsx')
# Смотрим, что там
print(df.head()) 💬 read_excel — самый быстрый способ вытащить табличку из Excel.
Файл должен быть .xlsx (не .xls!), и желательно без merged cells. from sqlalchemy import create_engine
# Подключаемся к SQLite (можно использовать и MySQL/PostgreSQL)
engine = create_engine('sqlite:///sales.db') 💬 create_engine() — универсальный способ подключения к БД через SQLAlchemy.
Хочешь MySQL? Просто меняешь строку подключения:
mysql+pymysql://user:password@localhost/dbname # Пишем в таблицу "orders"
df.to_sql('orders', con=engine, if_exists='append', index=False) 💬 i
Оглавление

Или как подружить Excel и SQL, чтобы не сойти с ума

Как использовать Python для импорта и экспорта данных в Excel из/в базы данных
Как использовать Python для импорта и экспорта данных в Excel из/в базы данных

🤔 Почему это вообще важно?

Ты наверняка сталкивался с этим:

  • Хранишь данные в базе (MySQL, PostgreSQL, SQLite — неважно),
  • А отчёты нужны в Excel,
  • Или наоборот — коллега скинул Excel-файл, а тебе нужно засунуть его в БД.

И вот ты вручную копируешь, вставляешь, сохраняешь в .csv, а потом колдуешь в SQL.

Есть способ проще — Python.

С его помощью можно:

  • 📥 Загрузить Excel в базу за пару строк кода
  • 📤 Выгрузить SQL-запрос прямо в Excel-файл
  • 🤖 Автоматизировать всё это и забыть про рутину

📦 Что будем использовать

pip install pandas openpyxl sqlalchemy

  • pandas — таблицы, фильтрация, преобразования
  • openpyxl — для работы с Excel .xlsx
  • sqlalchemy — универсальный мост между Python и базами

📁 Что у нас есть

Представим, у нас:

  • база данных sales.db (на SQLite, для простоты),
  • таблица orders со следующей структурой:
    id (INT)
    client_name (TEXT)
    amount (FLOAT)
    date (DATE)

А ещё Excel-файл новые_заказы.xlsx с новыми строками.

🔁 Сценарий 1: Импорт Excel в базу данных

Шаг 1: Читаем Excel

import pandas as pd

# Загружаем Excel-файл
df = pd.read_excel('новые_заказы.xlsx')

# Смотрим, что там
print(df.head())

💬 read_excel — самый быстрый способ вытащить табличку из Excel.

Файл должен быть .xlsx (не .xls!), и желательно без merged cells.

Шаг 2: Подключаемся к базе

from sqlalchemy import create_engine

# Подключаемся к SQLite (можно использовать и MySQL/PostgreSQL)
engine = create_engine('sqlite:///sales.db')

💬 create_engine() — универсальный способ подключения к БД через SQLAlchemy.

Хочешь MySQL? Просто меняешь строку подключения:

mysql+pymysql://user:password@localhost/dbname

Шаг 3: Загружаем данные в базу

# Пишем в таблицу "orders"
df.to_sql('orders', con=engine, if_exists='append', index=False)

💬 if_exists='append' — значит, мы добавляем данные к существующей таблице.

Можно также 'replace' — но это удалит всё старое, будь осторожен.

📤 Сценарий 2: Выгрузка данных из базы в Excel

Теперь представим, что ты хочешь выгрузить заказы за март в Excel для отправки начальству.

Шаг 1: SQL-запрос

# Запросим из базы только заказы за март
query = """
SELECT * FROM orders
WHERE strftime('%m', date) = '03'
"""

# Загружаем в DataFrame
df_march = pd.read_sql(query, con=engine)

print(df_march.head())

💬 Здесь мы используем strftime() — это SQLite-фишка.

Если работаешь с MySQL/Postgres, используешь MONTH(date) = 3.

Шаг 2: Сохраняем в Excel

# Сохраняем в Excel-файл
df_march.to_excel('отчет_март.xlsx', index=False)

💬 index=False — не добавлять лишний столбец с индексом pandas.

Теперь у тебя в руках готовый Excel-файл, пригодный для отправки.

📈 Бонус: Добавим группировку и аналитику

Что если ты хочешь сделать отчёт по сумме заказов по клиентам?

# Группируем
summary = df_march.groupby('client_name')['amount'].sum().reset_index()

# Сохраняем в отдельный лист
with pd.ExcelWriter('отчет_март_сводка.xlsx', engine='openpyxl') as writer:
df_march.to_excel(writer, sheet_name='Все заказы', index=False)
summary.to_excel(writer, sheet_name='Сводка по клиентам', index=False)

💬 ExcelWriter — позволяет писать в несколько вкладок одного файла.

Бухгалтеры будут в восторге. А ты — на шаг ближе к автоматизации.

⚡ Идеи для полной автоматизации:

  • Загружать данные из Excel на сервер по расписанию
  • Автоматически выгружать отчёты каждую неделю
  • Отправлять Excel-файлы по почте через SMTP
  • Обрабатывать файлы от разных филиалов (с разными шаблонами)

🧠 Что ты теперь умеешь

✅ Импортировать Excel в базу за 2 строчки

✅ Делать SQL-запросы и загружать их в pandas

✅ Сохранять результаты в Excel-отчёты

✅ Работать с несколькими листами

✅ Автоматизировать всю Excel-рутину

💬 Финалочка

Excel хорош для людей.

SQL хорош для машин.

Python — мост между ними.

Так что, если тебе снова скажут:

«Слушай, можешь выгрузить из базы заказы и переслать в Excel?»

Ты теперь можешь ответить:

«Конечно. Оно уже делается. Автоматически. Каждый день в 7:00.»