Python SQLite3 Modul
Das sqlite3-Modul erlaubt dir, SQLite-Datenbanken direkt aus Python zu verwenden, ohne einen separaten Datenbankserver.
import sqlite3
SQLite ist eine gute Wahl für kleine Anwendungen, lokale Werkzeuge, Tests und zum Lernen von SQL. Die Datenbank kann in einer einzelnen Datei liegen oder nur im Speicher mit ':memory:'.
Mit einer Datenbank verbinden
SQLite kann die Datenbankdatei automatisch erstellen, wenn sie nicht existiert.
import sqlite3
connection = sqlite3.connect(':memory:')
print(type(connection).__name__)
Connection
Eine Tabelle erstellen und Zeilen einfügen
import sqlite3
connection = sqlite3.connect(':memory:')
cursor = connection.cursor()
cursor.execute('CREATE TABLE users (name TEXT, age INTEGER)')
cursor.execute('INSERT INTO users VALUES (?, ?)', ('Ada', 36))
cursor.execute('INSERT INTO users VALUES (?, ?)', ('Grace', 40))
connection.commit()
Verwende Platzhalter statt SQL-Strings manuell zusammenzusetzen.
WARNING
Baue SQL-Abfragen nicht durch das Verketten von Benutzereingaben. Verwende Platzhalter wie ?, um SQL-Injection-Fehler zu vermeiden.
Zeilen abfragen
rows = cursor.execute('SELECT name, age FROM users ORDER BY age').fetchall()
print(rows)
[('Ada', 36), ('Grace', 40)]
Row-Objekte verwenden
Row erlaubt dir, Spalten über ihren Namen anzusprechen.
connection = sqlite3.connect(':memory:')
connection.row_factory = sqlite3.Row
cursor = connection.cursor()
cursor.execute('CREATE TABLE projects (name TEXT)')
cursor.execute('INSERT INTO projects VALUES (?)', ('python-cheatsheet',))
row = cursor.execute('SELECT name FROM projects').fetchone()
print(row['name'])
python-cheatsheet
Einen Kontextmanager verwenden
Die Verbindung kann mit with verwendet werden, damit Änderungen bei Fehlerfreiheit automatisch übernommen werden.
import sqlite3
with sqlite3.connect(':memory:') as connection:
connection.execute('CREATE TABLE notes (body TEXT)')
connection.execute('INSERT INTO notes VALUES (?)', ('Learn sqlite3',))
rows = connection.execute('SELECT body FROM notes').fetchall()
print(rows)
[('Learn sqlite3',)]