Python und SQLite3

In den vorhergehenden Artikeln habe ich gezeigt, wie man mit Python CSV-, JSON- oder Excel-Daten lesen kann. In diesem Tutorial geht es nun mit SQLite3 weiter. Ziel ist es eine Tabelle mit Daten anzulegen.

Datenbank erstellen

Zunächst geht es um das Erstellen einer Datenbank mit dem Namen „tutorial.db“.

import sqlite3

# Create a database connection
# (This will create a SQLite3 database called 'tutorial.db'.)
conn = sqlite3.connect('tutorial.db')

Außerdem wird ein Cursor-Objekt benötigt, um SQL-Befehle ausführen zu können. Hierfür steht die Methode cursor() zu verfügung:

cur = conn.cursor()

Mithilfe der kostenlosen Anwendung DB Browser for SQLite kann man eine SQLite3-Datenbank öffnen. Freilich gibt es bisher nicht viel zu sehen, schließlich haben wir noch keine Tabelle angelegt.

Eine leere SQLite-Datenbank

Tabelle erstellen

Die anzulegende Tabelle soll „users“ heißen und über folgende Attribute verfügen:

  • id
  • name
  • age

Dies wird unter Verwendung des SQL-Befehls CREATE TABLE durch folgenden Code umgesetzt:

cur.execute('CREATE TABLE IF NOT EXISTS users(id integer PRIMARY KEY, name text, age real)')
SQLite-Datenbank mit der Tabelle „users“

Daten in die Tabelle einfügen

Für das Hinzufügen von Daten existiert der SQL-Befehl INSERT INTO. Zu der Tabelle „users“ soll der Benutzer „Tim“ mit dem Alter „32“ und der id „1“ hinzugefügt werden:

cur.execute('INSERT INTO users VALUES(1, "Tim", 32)')
conn.commit()

Die Methode commit() ist dafür da, alle Veränderungen zu speichern.

Im DB Browser kann man sich unter „Browse Data“ die in der Tabelle vorhandenen Daten anzeigen lassen.

Ein Datensatz in der Tabelle „users“

Schließlich kann nach der Ausführung aller SQL-Befehle, die Verbindung zur Datenbank wieder geschlossen werden:

conn.close()

Der vollständige Code lautet nun:

import sqlite3

# Create a database connection
conn = sqlite3.connect('tutorial.db')
cur = conn.cursor()

# Create the table
cur.execute('CREATE TABLE IF NOT EXISTS users(id integer PRIMARY KEY, name text, age real)')

# Insert data
cur.execute('INSERT INTO users VALUES(1, "Tim", 32)')
conn.commit()

# Close the connection
conn.close()

Weiterführende Links