
Jak działa pandas to_sql w języku Python? Przykład zastosowania
Pracując z biblioteką pandas w Pythonie, często zachodzi potrzeba zapisania danych do bazy SQL. Na szczęście, pandas.to_sql() to funkcja, która pozwala łatwo zapisać DataFrame wprost do tabeli w bazie danych. Dzisiaj omówię, jak działa, jakie ma opcje i pokażę przykładowe zastosowania.
Co to jest pandas.to_sql()?
Funkcja to_sql() umożliwia zapisanie zawartości DataFrame do bazy danych zgodnej z PEP 249, czyli interfejsem baz danych Python Database API (DB-API). Można jej używać do tworzenia nowych tabel, dodawania danych oraz nadpisywania istniejących tabel.
Podstawowa składnia pandas.to_sql()
Funkcja to_sql() ma prostą składnię:
df.to_sql(
name,
con,
schema=None,
if_exists='fail',
index=True,
index_label=None,
chunksize=None,
dtype=None,
method=None
)
Najważniejsze parametry:
- name – nazwa tabeli w bazie danych.
- con – obiekt połączenia do bazy SQLAlchemy.
- if_exists – określa, co zrobić jeśli tabela już istnieje:
'fail'(domyślnie) – zgłoszenie błędu, jeśli tabela istnieje.'replace'– usunięcie istniejącej tabeli i utworzenie nowej.'append'– dodanie danych do istniejącej tabeli.
- index – określa, czy indeks DataFrame ma być zapisany jako kolumna.
Przykład: Zapisywanie DataFrame do SQLite
Na początek stworzę przykładowy DataFrame i zapiszę go do bazy SQLite.
import pandas as pd
import sqlite3
# Tworzenie przykładowego DataFrame
data = {'imie': ['Anna', 'Jan', 'Kasia'],
'wiek': [28, 35, 23]}
df = pd.DataFrame(data)
# Tworzenie połączenia z bazą SQLite
conn = sqlite3.connect('baza_danych.db')
# Zapisanie DataFrame do tabeli "osoby"
df.to_sql('osoby', conn, if_exists='replace', index=False)
# Zamknięcie połączenia
conn.close()
Co tutaj się dzieje?
- Tworzę
DataFramez danymi. - Łączę się z bazą SQLite (lub tworzę ją, jeśli nie istnieje).
- Wysyłam dane do bazy przy użyciu
to_sql(). - Parametr
if_exists='replace'sprawia, że tabela zostanie nadpisana, jeśli już istnieje.
Zapisywanie danych do MySQL lub PostgreSQL
Jeśli chcę zapisać dane do MySQL lub PostgreSQL, używam SQLAlchemy do zarządzania połączeniem. W przykładzie poniżej wypełniam bazę MySQL.
from sqlalchemy import create_engine
# Tworzenie silnika bazy MySQL
engine = create_engine('mysql+pymysql://user:password@localhost/mojabaza')
# Zapisanie danych do tabeli "osoby"
df.to_sql('osoby', con=engine, if_exists='append', index=False)
Wydajność: Użycie chunksize
Jeśli mam duży zbiór danych, zapisywanie może być wolne. Można jednak poprawić wydajność, używając chunksize, który podzieli dane na mniejsze fragmenty.
df.to_sql('osoby', con=engine, if_exists='append', index=False, chunksize=1000)
Określanie typów kolumn w bazie
Domyślnie to_sql() próbuje samodzielnie dobrać typy kolumn, ale można je określić ręcznie, używając dtype:
from sqlalchemy.types import Integer, String
df.to_sql('osoby', con=engine, if_exists='replace', index=False, dtype={'imie': String(50), 'wiek': Integer})
Jeśli tabela już istnieje – co zrobić?
Opcja if_exists pozwala kontrolować, co się stanie, jeśli tabela już istnieje:
| Wartość if_exists | Efekt |
|---|---|
'fail' |
Zwraca błąd, jeśli tabela już istnieje. |
'replace' |
Usuwa istniejącą tabelę i tworzy nową. |
'append' |
Dodaje nowe dane do istniejącej tabeli. |
Podsumowanie
Funkcja pandas.to_sql() to bardzo wygodne narzędzie do przesyłania danych do baz SQL. Korzystając z niej, można w prosty sposób:
- Zapisać DataFrame do bazy danych.
- Kontrolować, czy tabela ma być tworzona, nadpisywana czy uzupełniana.
- Optymalizować zapis dużych zbiorów danych za pomocą
chunksize. - W pełni kontrolować typy kolumn w bazie danych.
Jeśli często pracuję z bazami danych i analizą danych w Pythonie, to_sql() jest niezastąpioną funkcją.
Inny ciekawy artykuł:
Jak działa pandas to_excel w języku Python? Przykład zastosowania
Opanuj analizę danych w Pythonie z moim kursem!
Opanujesz podstawy programowania w Pythonie, w tym typy danych, zmienne, listy, słowniki, funkcje oraz obsługę błędów. Nauczysz się korzystać z biblioteki pandas do zaawansowanej analizy danych i pracy z różnymi rodzajami danych. Zrozumiesz proces analizy, eksploracji (EDA) i wizualizacji. Tworzenie własnych funkcji przygotuje Cię do rozmów kwalifikacyjnych i rozwiązywania rzeczywistych problemów biznesowych.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

