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 columnParametr 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 safePrzepł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 timeSzybkie 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 danychpd.read_sql(query, engine)do wczytywania wyników zapytania do obiektu DataFramedf.to_sql(table, engine, index=False, if_exists=...)do zapisywania danych z powrotem- Zapytania parametryzowane i
chunksizedla 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
- SQLite z modułem sqlite3 Pythona
- Integracja Pandas i SQL
- Przechowywanie i odpytywanie wyników ML
- Wprowadzenie do baz danych wektorowych