Lättviktsdatabas för lokala projekt

SQLite är en lättviktsdatabas som inte kräver en separat server för att fungera. Den är perfekt för mindre projekt, prototyper eller när du behöver en snabb och enkel databaslösning. Eftersom SQLite är inbyggt i Python krävs inga ytterligare installationer för att använda den.
Vad är SQLite?
SQLite är en filbaserad databas som lagrar all data i en enda fil. Den är snabb, pålitlig och enkel att använda, men passar bäst för applikationer med låg till medelstor belastning.
Grundläggande arbete med SQLite i Python
Python har inbyggt stöd för SQLite via modulen sqlite3. Här går vi igenom hur du kan skapa, läsa, uppdatera och ta bort data i en SQLite-databas.
Skapa och ansluta till en databas
import sqlite3# Connect to SQLite database (creates the file if it doesn't exist)connection = sqlite3.connect("example.db")cursor = connection.cursor()print("Database created and connected successfully.")Code language: PHP (php) Skapa en tabell
# Create a tablecursor.execute("""CREATE TABLE IF NOT EXISTS Users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT UNIQUE NOT NULL, age INTEGER NOT NULL)""")print("Table created successfully.")Code language: PHP (php) CRUD-operationer med SQLite
Create: Lägg till data
# Insert a single usercursor.execute("INSERT INTO Users (name, email, age) VALUES (?, ?, ?)", ("Alice", "alice@example.com", 25))# Insert multiple usersusers = [ ("Bob", "bob@example.com", 30), ("Charlie", "charlie@example.com", 35)]cursor.executemany("INSERT INTO Users (name, email, age) VALUES (?, ?, ?)", users)connection.commit()print("Data inserted successfully.")Code language: PHP (php) Read: Hämta data
# Fetch all userscursor.execute("SELECT * FROM Users")all_users = cursor.fetchall()print("All Users:", all_users)# Fetch users older than 30cursor.execute("SELECT * FROM Users WHERE age > 30")users_over_30 = cursor.fetchall()print("Users over 30:", users_over_30)Code language: PHP (php) Update: Uppdatera data
# Update a user's agecursor.execute("UPDATE Users SET age = ? WHERE name = ?", (28, "Alice"))connection.commit()print("User updated successfully.")Code language: PHP (php) Delete: Ta bort data
# Delete a user by namecursor.execute("DELETE FROM Users WHERE name = ?", ("Bob",))connection.commit()print("User deleted successfully.")Code language: PHP (php) Sammanfattande kodexempel
Här är ett komplett exempel som visar hur man utför alla ovanstående operationer.
import sqlite3# Connect to SQLite databaseconnection = sqlite3.connect("example.db")cursor = connection.cursor()# Create tablecursor.execute("""CREATE TABLE IF NOT EXISTS Users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT UNIQUE NOT NULL, age INTEGER NOT NULL)""")# Insert datacursor.execute("INSERT INTO Users (name, email, age) VALUES (?, ?, ?)", ("Alice", "alice@example.com", 25))cursor.executemany("INSERT INTO Users (name, email, age) VALUES (?, ?, ?)", [("Bob", "bob@example.com", 30), ("Charlie", "charlie@example.com", 35)])connection.commit()# Fetch datacursor.execute("SELECT * FROM Users")print("All Users:", cursor.fetchall())# Update datacursor.execute("UPDATE Users SET age = ? WHERE name = ?", (28, "Alice"))connection.commit()# Delete datacursor.execute("DELETE FROM Users WHERE name = ?", ("Bob",))connection.commit()# Fetch remaining datacursor.execute("SELECT * FROM Users")print("Remaining Users:", cursor.fetchall())# Close connectionconnection.close()# Output:# All Users: [(1, 'Alice', 'alice@example.com', 25), (2, 'Bob', 'bob@example.com', 30), (3, 'Charlie', 'charlie@example.com', 35)]# Remaining Users: [(1, 'Alice', 'alice@example.com', 28), (3, 'Charlie', 'charlie@example.com', 35)]Code language: PHP (php) Tabell: Vanliga SQLite-datatyper
| Datatyp | Beskrivning |
|---|---|
NULL | En nullvärde (saknad data). |
INTEGER | Ett heltal. |
REAL | Ett flyttal (decimaltal). |
TEXT | En textsträng. |
BLOB | Binär data (t.ex. bilder eller filer). |
Tips för att arbeta med SQLite
- Använd parametrar för att undvika SQL-injektion: Använd
?som platshållare och skicka data som en tupel. - Indexera tabeller för bättre prestanda: Använd index för att snabba upp sökningar i stora tabeller.
- Undvik att låsa databasen: Använd
commit()regelbundet för att skriva data till databasen. - Testa dina frågor: Testa SQL-frågor direkt i en SQLite-klient för att verifiera dem.
Vanliga fallgropar
- Glömma att stänga anslutningen: Använd
connection.close()för att frigöra resurser. - Ej hantera unika värden: Om en kolumn som
emailska vara unik, specificera det vid skapandet av tabellen. - Arbeta med stora databaser: SQLite är inte idealiskt för applikationer med hög belastning eller stora dataset.
Sammanfattning
I detta kapitel har vi lärt oss:
- Grunderna i att arbeta med SQLite i Python.
- Hur man utför CRUD-operationer i en SQLite-databas.
- Tips och vanliga fallgropar att undvika.
SQLite är ett utmärkt val för mindre projekt eller som en lättviktig databaslösning.

