SQLite - Python

Installation

SQLite3 kann mit Python über das sqlite3-Modul integriert werden. Das sqlite3-Modul wurde von Gerhard Haring geschrieben. Es bietet eine SQL-Schnittstelle, die mit der in PEP 249 beschriebenen DB-API 2.0-Spezifikation kompatibel ist. Sie müssen dieses Modul nicht separat installieren, da Python 2.5.x und höher dieses Modul standardmäßig enthält.

Um das sqlite3-Modul zu verwenden, müssen Sie zunächst ein Verbindungsobjekt erstellen, das die Datenbank repräsentiert, und dann können Sie optional ein Cursor-Objekt erstellen, das Ihnen hilft, alle SQL-Anweisungen auszuführen.

Python-sqlite3-Modul-API

Im Folgenden finden Sie wichtige Routinen des sqlite3-Moduls, die Ihren Anforderungen für die Verwendung von SQLite-Datenbanken in Ihren Python-Programmen gerecht werden können. Wenn Sie weitere Details benötigen, lesen Sie bitte die offizielle Dokumentation des Python-sqlite3-Moduls.

Nein.API & Beschreibung
1sqlite3.connect(database [,timeout ,other optional arguments])

Diese API öffnet eine Verbindung zur SQLite-Datenbankdatei database. Sie können ":memory:" verwenden, um eine Datenbankverbindung zur Datenbank im RAM zu öffnen, anstatt sie auf der Festplatte zu öffnen. Wenn die Datenbank erfolgreich geöffnet wird, wird ein Verbindungsobjekt zurückgegeben.

Wenn auf eine Datenbank von mehreren Verbindungen zugegriffen wird und eine davon die Datenbank ändert, wird die SQLite-Datenbank gesperrt, bis die Transaktion festgeschrieben wurde. Der Parameter timeout gibt an, wie lange die Verbindung auf die Sperre wartet, bis eine Ausnahme auftritt und die Verbindung getrennt wird. Der Parameter timeout hat standardmäßig den Wert 5.0 (5 Sekunden).

Wenn der angegebene Datenbankname filename nicht existiert, erstellt dieser Aufruf eine Datenbank. Wenn Sie die Datenbank nicht im aktuellen Verzeichnis erstellen möchten, können Sie einen Dateinamen mit einem Pfad angeben, sodass Sie die Datenbank überall erstellen können.

2connection.cursor([cursorClass])

Diese Routine erstellt einenCursor, der in der Python-Datenbankprogrammierung verwendet wird. Diese Methode akzeptiert einen einzelnen optionalen Parameter cursorClass. Wenn dieser Parameter angegeben wird, muss er eine benutzerdefinierte Cursor-Klasse sein, die von sqlite3.Cursor abgeleitet ist.

3cursor.execute(sql [, optional parameters])

Diese Routine führt eine SQL-Anweisung aus. Die SQL-Anweisung kann parametrisiert werden (d. h. unter Verwendung von Platzhaltern anstelle von SQL-Text). Das sqlite3-Modul unterstützt zwei Arten von Platzhaltern: Fragezeichen und benannte Platzhalter (benannter Stil).

Beispiel: cursor.execute("insert into people values (?, ?)", (who, age))

4connection.execute(sql [, optional parameters])

Diese Routine ist eine Abkürzung für die Methode, die vom oben beschriebenen Cursor-Objekt bereitgestellt wird. Sie erstellt ein intermediäres Cursor-Objekt durch Aufruf der cursor()-Methode und ruft dann die execute-Methode des Cursors mit den angegebenen Parametern auf.

5cursor.executemany(sql, seq_of_parameters)

Diese Routine führt einen SQL-Befehl für alle in seq_of_parameters gefundenen Parameterfolgen oder Zuordnungen aus.

6connection.executemany(sql[, parameters])

Diese Routine ist eine Abkürzung, die ein intermediäres Cursor-Objekt durch Aufruf der cursor()-Methode erstellt und dann die executemany-Methode des Cursors mit den angegebenen Parametern aufruft.

7cursor.executescript(sql_script)

Diese Routine führt mehrere SQL-Anweisungen aus, sobald sie ein Skript empfängt. Sie führt zuerst eine COMMIT-Anweisung aus und führt dann das als Parameter übergebene SQL-Skript aus. Alle SQL-Anweisungen sollten Semikolons;zur Trennung verwenden.

8connection.executescript(sql_script)

Diese Routine ist eine Abkürzung, die ein zwischengeschaltetes Cursor-Objekt durch Aufruf der Methode cursor() erstellt und dann die Methode executescript des Cursors mit den angegebenen Parametern aufruft.

9connection.total_changes()

Diese Routine gibt die Gesamtzahl der Datenbankzeilen zurück, die seit dem Öffnen der Datenbankverbindung geändert, eingefügt oder gelöscht wurden.

10connection.commit()

Diese Methode führt einen Commit für die aktuelle Transaktion aus. Wenn Sie diese Methode nicht aufrufen, sind alle seit Ihrem letzten Aufruf von commit() durchgeführten Aktionen für andere Datenbankverbindungen nicht sichtbar.

11connection.rollback()

Diese Methode macht die seit dem letzten Aufruf von commit() vorgenommenen Änderungen an der Datenbank rückgängig.

12connection.close()

Diese Methode schließt die Datenbankverbindung. Beachten Sie, dass dadurch nicht automatisch commit() aufgerufen wird. Wenn Sie die Datenbankverbindung schließen, ohne zuvor die Methode commit() aufzurufen, gehen alle von Ihnen vorgenommenen Änderungen verloren!

13cursor.fetchone()

Diese Methode ruft die nächste Zeile im Abfrageergebnis ab, gibt eine einzelne Sequenz zurück und gibt None zurück, wenn keine weiteren Daten verfügbar sind.

14cursor.fetchmany([size=cursor.arraysize])

Diese Methode ruft die nächste Gruppe von Zeilen in der Ergebnismenge der Abfrage ab und gibt eine Liste zurück. Wenn keine weiteren Zeilen verfügbar sind, gibt sie eine leere Liste zurück. Diese Methode versucht, so viele Zeilen abzurufen, wie durch den size-Parameter angegeben.

15cursor.fetchall()

Diese Routine ruft alle (verbleibenden) Zeilen in der Ergebnismenge der Abfrage ab und gibt eine Liste zurück. Wenn keine Zeilen verfügbar sind, gibt sie eine leere Liste zurück.

Verbindung zur Datenbank herstellen

Der folgende Python-Code zeigt, wie eine Verbindung zu einer vorhandenen Datenbank hergestellt wird. Wenn die Datenbank nicht existiert, wird sie erstellt, und schließlich wird ein Datenbankobjekt zurückgegeben.

Beispiel

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')

print (Datenbank erfolgreich geöffnet)

Hier können Sie den Datenbanknamen auch auf einen bestimmten Namen:memory:setzen, wodurch eine Datenbank im RAM erstellt wird. Nun lassen Sie uns das obige Programm ausführen, um unsere Datenbank im aktuellen Verzeichnistest.dbzu erstellen. Sie können den Pfad nach Bedarf ändern. Speichern Sie den obigen Code in der Datei sqlite.py und führen Sie ihn wie unten gezeigt aus. Wenn die Datenbank erfolgreich erstellt wurde, wird die unten gezeigte Meldung angezeigt:

$chmod +x sqlite.py
$./sqlite.py
Open database successfully

Tabelle erstellen

Das folgende Python-Codefragment wird verwendet, um eine Tabelle in der zuvor erstellten Datenbank zu erstellen:

Beispiel

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print (Datenbank erfolgreich geöffnet)
c = conn.cursor()
c.execute('''CREATE TABLE COMPANY
       (ID INT PRIMARY KEY     NOT NULL,
       NAME TEXT NOT NULL,
       AGE INT NOT NULL,
       ADDRESS CHAR(50),
       SALARY REAL);'''
)
print (Tabelle erfolgreich erstellt)
conn.commit()
conn.close()

Wenn das obige Programm ausgeführt wird, wird es die COMPANY-Tabelle intest.dberstellen und die unten gezeigte Meldung anzeigen:

Database opened successfully
Table created successfully

INSERT-Operation

Das folgende Python-Programm zeigt, wie Datensätze in der oben erstellten COMPANY-Tabelle erstellt werden:

Beispiel

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
print (Datenbank erfolgreich geöffnet)

c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )"
)

c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )"
)

c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )"
)

c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )"
)

conn.commit()
print (Daten erfolgreich eingefügt)
conn.close()

Wenn das obige Programm ausgeführt wird, werden die angegebenen Datensätze in der Tabelle COMPANY erstellt und die folgenden zwei Zeilen angezeigt:

Database opened successfully Data inserted successfully

SELECT Operation

The following Python program shows how to fetch and display records from the COMPANY table created earlier:

#!/usr/bin/python

Example

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
print (Database opened successfully)

cursor = c.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print (Data operation successful)
conn.close()

When the above program is executed, it will produce the following result:

数据库打开成功
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

数据操作成功

UPDATE Operation

The following Python code shows how to use the UPDATE statement to update any record, and then fetch and display the updated records from the COMPANY table:

Example

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
print (Database opened successfully)

c.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
conn.commit()
print "Total number of rows updated :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print (Data operation successful)
conn.close()

When the above program is executed, it will produce the following result:

数据库打开成功
Total number of rows updated : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  25000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

数据操作成功

DELETE Operation

The following Python code shows how to use the DELETE statement to delete any record, and then fetch and display the remaining records from the COMPANY table:

Example

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
print (Database opened successfully)

c.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print (Data operation successful)
conn.close()

When the above program is executed, it will produce the following result:

数据库打开成功
Total number of rows deleted : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

数据操作成功
Other Extensions