0Pricing
Learn AI with Python · Lekcja

Integracja Pandas i SQL

pd.read_sql(), df.to_sql(), silnik SQLAlchemy i bezpośrednie wczytywanie wyników zapytań do DataFrames.

Integracja Pandas i SQL to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

pandas łączy się z SQL

Nie trzeba wybierać między SQL a pandas — narzędzia te dobrze ze sobą współpracują. Można wczytać dane z bazy danych do obiektu DataFrame, przekształcić je za pomocą pandas i zapisać wyniki z powrotem.

Elementami łączącymi są SQLAlchemy oraz funkcje pandas read_sql i to_sql.

Dlaczego SQLAlchemy?

pandas komunikuje się z bazami danych za pośrednictwem połączenia lub silnika SQLAlchemy. Silnik ukrywa różnice między typami baz danych, dzięki czemu ten sam kod działa z SQLite, PostgreSQL, MySQL i innymi bazami — wystarczy zmienić adres URL.

Tworzenie silnika

create_engine przyjmuje adres URL połączenia. Schemat adresu URL określa sterownik bazy danych.

from sqlalchemy import create_engine

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

Odczytywanie tabeli za pomocą pd.read_sql

pd.read_sql wykonuje zapytanie lub odczytuje tabelę i zwraca obiekt DataFrame. Należy przekazać ciąg SQL oraz silnik.

import pandas as pd

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

Odczytywanie za pomocą filtrowanego zapytania

Filtrowanie i agregowanie warto zlecić bazie danych, a następnie przekazać do pandas mniejszy wynik. Jest to znacznie wydajniejsze niż wczytywanie wszystkiego.

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

Zapytania parametryzowane

Parametry zapytania należy przekazywać bezpiecznie za pomocą argumentu params, zamiast formatować ciągi znaków.

from sqlalchemy import text

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

Zapisywanie obiektu DataFrame za pomocą df.to_sql

df.to_sql(table, engine) zapisuje obiekt DataFrame w tabeli bazy danych, tworząc ją na podstawie typów danych obiektu DataFrame, jeśli jest to konieczne.

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

Parametr index

Domyślnie to_sql zapisuje indeks obiektu DataFrame jako kolumnę. Zwykle nie jest to potrzebne — należy przekazać index=False, aby go pominąć.

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

Parametr if_exists

if_exists określa zachowanie w przypadku, gdy tabela już istnieje:

  • "fail" — zgłasza błąd (wartość domyślna)
  • "replace" — usuwa tabelę i tworzy ją ponownie
  • "append" — dodaje wiersze do istniejącej tabeli
df.to_sql("results", engine, if_exists="append", index=False)
# Use "replace" to overwrite, "fail" to be safe

Przepływ pracy w obiegu zamkniętym

Typowy potok wygląda następująco: odczyt surowych danych z SQL, przekształcenie ich w pandas i zapisanie oczyszczonego wyniku w nowej tabeli.

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)

Odczytywanie dużych tabel partiami

W przypadku tabel zbyt dużych, aby zmieściły się w pamięci, należy przekazać parametr chunksize do read_sql, aby iterować po wyniku partiami.

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

Szybkie sprawdzenie: dołączanie wierszy

Celem jest użycie to_sql do dodania nowych wierszy do istniejącej tabeli bez jej usuwania.

Podsumowanie: pandas i SQL

Można teraz przenosić dane między pandas a bazami danych:

  • create_engine(url) do tworzenia połączenia niezależnego od typu bazy danych
  • pd.read_sql(query, engine) do wczytywania wyników zapytania do obiektu DataFrame
  • df.to_sql(table, engine, index=False, if_exists=...) do zapisywania danych z powrotem
  • Zapytania parametryzowane i chunksize dla bezpieczeństwa i skalowalności

Następnie: zapisywanie wyników eksperymentów ML i wykonywanie na nich zapytań.

Często zadawane pytania

Czy lekcja „Integracja Pandas i SQL” jest bezpłatna?

Tak — pełny tekst „Integracja Pandas i SQL” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „Integracja Pandas i SQL”?

pd.read_sql(), df.to_sql(), silnik SQLAlchemy i bezpośrednie wczytywanie wyników zapytań do DataFrames. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Integracja Pandas i SQL”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. SQLite z modułem sqlite3 Pythona
  2. Integracja Pandas i SQL
  3. Przechowywanie i odpytywanie wyników ML
  4. Wprowadzenie do baz danych wektorowych
← Powrót do Learn AI with Python