SQLite z modułem sqlite3 Pythona
Tworzenie baz danych i tabel, INSERT/SELECT/UPDATE, zapytania parametryzowane i zarządzanie połączeniami.
SQLite z modułem sqlite3 Pythona to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 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.
Dlaczego bazy danych w AI?
Pliki płaskie sprawdzają się do czasu, gdy dane się rozrosną lub wiele części projektu będzie potrzebować tych samych rekordów. Baza danych zapewnia szybkie zapytania, ustrukturyzowane schematy i bezpieczny jednoczesny dostęp.
SQLite to niewymagająca konfiguracji baza danych oparta na pliku, wbudowana w Python za pośrednictwem modułu sqlite3 — idealna do eksperymentów z AI i małych projektów.
Łączenie za pomocą sqlite3.connect
sqlite3.connect otwiera lub tworzy plik bazy danych i zwraca połączenie. Wartość :memory: służy do utworzenia tymczasowej bazy danych w pamięci RAM.
import sqlite3
conn = sqlite3.connect("ml.db") # creates ml.db if missing
print(conn)Obiekty cursor i cursor.execute
Zapytania SQL wykonuje się za pośrednictwem obiektu cursor uzyskanego z połączenia. cursor.execute(sql) wysyła instrukcję do bazy danych.
import sqlite3
conn = sqlite3.connect("ml.db")
cur = conn.cursor()
cur.execute("SELECT sqlite_version()")
print(cur.fetchone())CREATE TABLE IF NOT EXISTS
Tabelę należy zdefiniować za pomocą schematu. IF NOT EXISTS pozwala bezpiecznie wykonywać tę instrukcję wielokrotnie — nie spowoduje ona błędu, jeśli tabela już istnieje.
cur.execute("""
CREATE TABLE IF NOT EXISTS experiments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
accuracy REAL,
created_at TEXT
)
""")INSERT z symbolami zastępczymi
Nigdy nie należy tworzyć zapytań SQL za pomocą formatowania ciągów znaków — otwiera to drogę do wstrzyknięcia SQL i powoduje problemy z cudzysłowami. Należy używać symboli zastępczych ? i przekazywać wartości jako krotkę.
cur.execute(
"INSERT INTO experiments (name, accuracy, created_at) VALUES (?, ?, ?)",
("baseline", 0.82, "2026-05-29"),
)Wstawianie wielu wierszy za pomocą executemany
executemany wstawia listę krotek w jednym wydajnym wywołaniu — jest znacznie szybsze niż wielokrotne wywoływanie execute.
rows = [
("rf", 0.88, "2026-05-29"),
("xgb", 0.91, "2026-05-29"),
]
cur.executemany(
"INSERT INTO experiments (name, accuracy, created_at) VALUES (?, ?, ?)",
rows,
)conn.commit() zapisuje zmiany
Operacje zapisu odbywają się w ramach transakcji i nie zostają utrwalone, dopóki nie zostanie wywołane conn.commit(). Zapomnienie o tym to najczęstszy błąd początkujących — przy zamknięciu połączenia dane po cichu znikają.
conn.commit() # persist all pending INSERT/UPDATE/DELETEWykonywanie zapytań za pomocą fetchall i fetchone
Po wykonaniu SELECT należy pobrać wyniki:
fetchone()— następny pojedynczy wierszfetchall()— wszystkie pozostałe wiersze jako lista krotek- w przypadku dużych wyników można bezpośrednio iterować po obiekcie cursor
cur.execute("SELECT name, accuracy FROM experiments")
for row in cur.fetchall():
print(row) # ("baseline", 0.82) ...Filtrowanie i sortowanie
SQL wykonuje najcięższą pracę: filtruje za pomocą WHERE, sortuje za pomocą ORDER BY i ogranicza liczbę wyników za pomocą LIMIT. Dla wartości w zapytaniach również należy używać symboli zastępczych.
cur.execute(
"SELECT name, accuracy FROM experiments WHERE accuracy > ? ORDER BY accuracy DESC LIMIT 3",
(0.85,),
)
print(cur.fetchall())Fabryka wierszy do dostępu po nazwach
Domyślnie wiersze są krotkami. Ustawienie conn.row_factory = sqlite3.Row umożliwia dostęp do kolumn po nazwie, co znacznie poprawia czytelność kodu.
import sqlite3
conn = sqlite3.connect("ml.db")
conn.row_factory = sqlite3.Row
cur = conn.cursor()
cur.execute("SELECT * FROM experiments")
row = cur.fetchone()
print(row["name"], row["accuracy"])Menedżery kontekstu dla bezpieczeństwa
Użycie with dla połączenia automatycznie zatwierdza transakcję po pomyślnym wykonaniu i wycofuje ją w razie błędu. W połączeniu z closing gwarantuje to posprzątanie zasobów.
import sqlite3
from contextlib import closing
with closing(sqlite3.connect("ml.db")) as conn:
with conn: # auto commit/rollback
conn.execute(
"INSERT INTO experiments (name, accuracy) VALUES (?, ?)",
("svm", 0.79),
)Szybkie sprawdzenie: utrwalanie operacji zapisu
Wykonano kilka instrukcji INSERT, a następnie zamknięto połączenie — przy następnym użyciu danych już nie było.
Podsumowanie: SQLite z sqlite3
Można teraz korzystać z prawdziwej bazy danych w Pythonie:
sqlite3.connecti obiektcursorCREATE TABLE IF NOT EXISTSdo bezpiecznego definiowania schematówINSERTz symbolami zastępczymi?orazexecutemanyconn.commit()do utrwalania operacji zapisufetchone/fetchall,WHERE/ORDER BY/LIMITsqlite3.Rowi menedżery kontekstu do tworzenia przejrzystego i bezpiecznego kodu
Następnie: łączenie pandas i SQL.
Często zadawane pytania
Czy lekcja „SQLite z modułem sqlite3 Pythona” jest bezpłatna?
Tak — pełny tekst „SQLite z modułem sqlite3 Pythona” 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 „SQLite z modułem sqlite3 Pythona”?
Tworzenie baz danych i tabel, INSERT/SELECT/UPDATE, zapytania parametryzowane i zarządzanie połączeniami. Ć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 1 z 4.
Ile czasu zajmuje lekcja „SQLite z modułem sqlite3 Pythona”?
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