Łączenie i tworzenie tabel
Otwórz bazę danych i zdefiniuj schemat
Łączenie i tworzenie tabel to bezpłatna lekcja Python Academy 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 Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.
Czym jest sqlite3?
Python zawiera moduł sqlite3 w bibliotece standardowej. Umożliwia on pracę z bazą danych SQLite — lekką bazą SQL opartą na pliku, która nie wymaga osobnego serwera.
- Nie wymaga instalacji
- Cała baza danych mieści się w jednym pliku
- Doskonale nadaje się do prototypów, testów i małych aplikacji
import sqlite3
print(sqlite3.version)Łączenie z bazą danych
Użyj sqlite3.connect(), aby otworzyć bazę danych. Jeśli plik nie istnieje, SQLite go utworzy.
Przekazanie ':memory:' tworzy tymczasową bazę danych w pamięci, która znika po zamknięciu połączenia.
import sqlite3
conn = sqlite3.connect(':memory:')
print('Connected:', conn)
conn.close()Obiekt kursora
Do wykonywania zapytań SQL potrzebny jest kursor. Wywołaj conn.cursor(), aby go otrzymać, a następnie użyj cursor.execute() do wysyłania instrukcji SQL.
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
print('Cursor ready:', cur)
conn.close()Tworzenie tabeli
Zdefiniuj schemat za pomocą CREATE TABLE. Każda kolumna potrzebuje nazwy i typu, takiego jak INTEGER, TEXT lub REAL.
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE users (id INTEGER, name TEXT, age INTEGER)')
print('Table created')
conn.close()Klucze główne
Klucz główny jednoznacznie identyfikuje każdy wiersz. Zadeklarowanie INTEGER PRIMARY KEY sprawia, że SQLite automatycznie zwiększa tę wartość.
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE books (id INTEGER PRIMARY KEY, title TEXT)')
print('books table ready')
conn.close()IF NOT EXISTS
Dwukrotne wykonanie CREATE TABLE powoduje błąd. Dodaj IF NOT EXISTS, aby instrukcję można było bezpiecznie wykonywać wielokrotnie.
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
sql = 'CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY, body TEXT)'
cur.execute(sql)
cur.execute(sql)
print('No error on second run')
conn.close()Ograniczenia kolumn
Ograniczenia wymuszają reguły dotyczące danych na poziomie bazy danych.
NOT NULLwymaga podania wartościUNIQUEuniemożliwia duplikatyDEFAULTdostarcza wartość zastępczą
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE accounts (id INTEGER PRIMARY KEY, email TEXT NOT NULL UNIQUE, active INTEGER DEFAULT 1)')
print('accounts table with constraints')
conn.close()Sprawdzanie schematu
SQLite przechowuje informacje o schemacie w sqlite_master. Wykonaj na nim zapytanie, aby wyświetlić listę tabel.
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)')
cur.execute("SELECT name FROM sqlite_master WHERE type='table'")
print(cur.fetchall())
conn.close()Zapisywanie do pliku
Aby utrwalać dane, przekaż nazwę pliku do connect(). Baza danych będzie dostępna także po zakończeniu programu.
Musisz wywołać conn.commit(), aby zapisać zmiany na dysku.
import sqlite3
conn = sqlite3.connect('app.db')
cur = conn.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS items (id INTEGER PRIMARY KEY, name TEXT)')
conn.commit()
print('Saved to app.db')
conn.close()Usuwanie tabeli
Usuń tabelę za pomocą DROP TABLE. Użyj IF EXISTS, aby uniknąć błędów, gdy tabela została już usunięta.
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE temp (id INTEGER)')
cur.execute('DROP TABLE IF EXISTS temp')
print('Dropped temp table')
conn.close()Zawsze zamykaj połączenie
Otwarte połączenia zajmują uchwyty plików. Po zakończeniu zawsze zamykaj je za pomocą conn.close() albo używaj bloku with, aby automatycznie posprzątać zasoby.
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE t (id INTEGER)')
conn.close()
print('Connection closed cleanly')Szybki test
Sprawdź, czy rozumiesz tworzenie tabel.
Podsumowanie
Poznałeś podstawy sqlite3.
connect()otwiera plik bazy danych lub go tworzycursor()udostępnia obiekt do wykonywania zapytań SQLCREATE TABLEdefiniuje schemat wraz z typami i ograniczeniamicommit()utrwala zmiany, aclose()zwalnia połączenie
Następnie wstawisz wiersze i odczytasz je.
Często zadawane pytania
Czy lekcja „Łączenie i tworzenie tabel” jest bezpłatna?
Tak — pełny tekst „Łączenie i tworzenie tabel” 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 Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Łączenie i tworzenie tabel”?
Otwórz bazę danych i zdefiniuj schemat Ćwiczysz Python Academy 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ąć Python Academy?
Nie wymagamy żadnego doświadczenia. Python Academy 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 „Łączenie i tworzenie tabel”?
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 Python Academy?
Tak. Każda lekcja Python Academy 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
- Łączenie i tworzenie tabel
- Insert, Select, Update, Delete
- Zapytania parametryzowane
- Transakcje i menedżery kontekstu