0Pricing
Learn AI with Python · Урок

Интеграция Pandas и SQL

pd.read_sql(), df.to_sql(), движок SQLAlchemy и прямая загрузка результатов запросов к базе данных в DataFrames.

«Интеграция Pandas и SQL» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Pandas встречается с SQL

Не обязательно выбирать между SQL и pandas — они работают вместе. Получите данные из базы в DataFrame, преобразуйте их с помощью pandas и запишите результаты обратно.

Связующим звеном служит SQLAlchemy вместе с функциями pandas read_sql и to_sql.

Зачем нужен SQLAlchemy?

pandas обращается к базам данных через подключение или движок SQLAlchemy. Движок скрывает различия между типами баз данных, поэтому один и тот же код работает с SQLite, PostgreSQL, MySQL и другими системами — достаточно изменить URL.

Создание движка

create_engine принимает URL подключения. Схема URL определяет драйвер базы данных.

from sqlalchemy import create_engine

engine = create_engine("sqlite:///ml.db")
# Postgres: create_engine("postgresql://user:pass@host:5432/db")

Чтение таблицы с помощью pd.read_sql

pd.read_sql выполняет запрос (или считывает таблицу) и возвращает DataFrame. Передайте ему строку SQL и движок.

import pandas as pd

df = pd.read_sql("SELECT * FROM experiments", engine)
print(df.head())

Чтение с фильтруемым запросом

Пусть база данных выполняет фильтрацию и агрегацию, а затем передайте pandas меньший результат. Это намного эффективнее, чем загружать всё.

df = pd.read_sql(
    "SELECT name, accuracy FROM experiments WHERE accuracy > 0.85 ORDER BY accuracy DESC",
    engine,
)
print(df)

Параметризованные запросы

Безопасно передавайте параметры запроса с помощью аргумента params, а не форматирования строк.

from sqlalchemy import text

df = pd.read_sql(
    text("SELECT * FROM experiments WHERE name = :n"),
    engine,
    params={"n": "xgb"},
)

Запись DataFrame с помощью df.to_sql

df.to_sql(table, engine) записывает DataFrame в таблицу базы данных, при необходимости создавая её на основе типов данных DataFrame.

df.to_sql("results", engine, index=False)

Параметр index

По умолчанию to_sql записывает индекс DataFrame как столбец. Обычно это не требуется — передайте index=False, чтобы пропустить его.

df.to_sql("results", engine, index=False)   # no extra index column

Параметр if_exists

if_exists определяет поведение, если таблица уже существует:

  • "fail" — вызвать ошибку (по умолчанию)
  • "replace" — удалить и заново создать таблицу
  • "append" — добавить строки в существующую таблицу
df.to_sql("results", engine, if_exists="append", index=False)
# Use "replace" to overwrite, "fail" to be safe

Рабочий процесс с обратной передачей

Типичный конвейер: прочитать необработанные данные из SQL, преобразовать их в pandas и записать очищенный результат в новую таблицу.

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine("sqlite:///ml.db")
raw = pd.read_sql("SELECT * FROM experiments", engine)
raw["accuracy_pct"] = (raw["accuracy"] * 100).round(1)
raw.to_sql("experiments_clean", engine, if_exists="replace", index=False)

Порционное чтение больших таблиц

Если таблица слишком велика и не помещается в память, передайте chunksize в read_sql, чтобы перебирать результат отдельными порциями.

for chunk in pd.read_sql("SELECT * FROM big_table", engine, chunksize=10000):
    process(chunk)   # handle 10k rows at a time

Быстрая проверка: добавление строк

Вы хотите, чтобы to_sql добавил новые строки в существующую таблицу, не удаляя её.

Итоги: pandas и SQL

Теперь Вы умеете перемещать данные между pandas и базами данных:

  • create_engine(url) для подключения, не зависящего от конкретной базы данных
  • pd.read_sql(query, engine) для загрузки результатов запроса в DataFrame
  • df.to_sql(table, engine, index=False, if_exists=...) для записи данных обратно
  • параметризованные запросы и chunksize для безопасности и масштабирования

Далее: хранение и запрос результатов экспериментов машинного обучения.

Часто задаваемые вопросы

Урок «Интеграция Pandas и SQL» бесплатный?

Да — полный текст урока «Интеграция Pandas и SQL» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Интеграция Pandas и SQL»?

pd.read_sql(), df.to_sql(), движок SQLAlchemy и прямая загрузка результатов запросов к базе данных в DataFrames. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Интеграция Pandas и SQL»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. SQLite с модулем sqlite3 Python
  2. Интеграция Pandas и SQL
  3. Хранение и запрос результатов машинного обучения
  4. Введение в векторные базы данных
← Назад к Learn AI with Python