Python wird mit einer leichten relationalen Datenbank SQLite geliefert. Diese Datenbank verwendet die SQL-Sprache. Als Back-End-Datenbank kann SQLite mit Python zum Erstellen von Websites oder zum Erstellen von Tools verwendet werden, die Datenspeicherung erfordern. SQLite wird auch in anderen Bereichen häufig verwendet, beispielsweise bei HTML5 und mobilen Endgeräten. sqlite3 in der Python-Standardbibliothek bietet eine Schnittstelle zu dieser Datenbank.
Ich werde eine einfache relationale Datenbank erstellen, um Buchkategorien und Preise für einen Buchladen zu speichern. Die Datenbank enthält zwei Tabellen: „Kategorie“ dient zum Aufzeichnen der Klassifizierung und „Buch“ zum Aufzeichnen von Informationen zu einem bestimmten Buch. Ein Buch gehört zu einer bestimmten Kategorie, daher verfügt das Buch über einen Fremdschlüssel, der auf die Primärschlüssel-ID der Kategorietabelle verweist.
Erstellen Sie die Datenbank
Ich werde zuerst die Datenbank und die Tabellen in der Datenbank erstellen. Nachdem ich connect() verwendet habe, um eine Verbindung zur Datenbank herzustellen, kann ich den SQL-Befehl ausführen, indem ich den Zeigercursor positioniere:
# By Vamei import sqlite3 # test.db is a file in the working directory. conn = sqlite3.connect("test.db") c = conn.cursor() # create tables c.execute('''CREATE TABLE category (id int primary key, sort int, name text)''') c.execute('''CREATE TABLE book (id int primary key, sort int, name text, price real, category int, FOREIGN KEY (category) REFERENCES category(id))''') # save the changes conn.commit() # close the connection with the database conn.close()
Die Datenbank von SQLite ist eine Datei auf der Festplatte, z. B. test.db oben, also die Ganze Datenbanken können einfach verschoben oder kopiert werden. test.db existiert zunächst nicht, daher erstellt SQLite automatisch eine neue Datei.
Mit dem Befehlexecute() habe ich zwei SQL-Befehle ausgeführt, um zwei Tabellen in der Datenbank zu erstellen. Speichern Sie nach der Erstellung die Verbindung zur Datenbank und trennen Sie sie.
Daten einfügen
Die Datenbank und die Tabellen werden oben erstellt und die abstrakte Struktur der Datenbank wird erstellt. Mit dem Folgenden werden Daten in dieselbe Datenbank eingefügt:
# By Vamei import sqlite3 conn = sqlite3.connect("test.db") c = conn.cursor() books = [(1, 1, 'Cook Recipe', 3.12, 1), (2, 3, 'Python Intro', 17.5, 2), (3, 2, 'OS Intro', 13.6, 2), ] # execute "INSERT" c.execute("INSERT INTO category VALUES (1, 1, 'kitchen')") # using the placeholder c.execute("INSERT INTO category VALUES (?, ?, ?)", [(2, 2, 'computer')]) # execute multiple commands c.executemany('INSERT INTO book VALUES (?, ?, ?, ?, ?)', books) conn.commit() conn.close()
Beim Einfügen von Daten kann auch „execute()“ verwendet werden, um eine vollständige SQL-Anweisung auszuführen. Verwenden Sie für Parameter in SQL-Anweisungen „?“ als Ersatzsymbol und geben Sie in nachfolgenden Parametern bestimmte Werte an. Zeichenfolgen im Python-Format wie „%s“ können hier nicht verwendet werden, da diese Verwendung anfällig für SQL-Injection-Angriffe ist.
Ich kann auch die Methodeexecutemany() verwenden, um mehrere Einfügungen durchzuführen und mehrere Datensätze hinzuzufügen. Jeder Datensatz ist ein Element in der Tabelle, beispielsweise die Elemente in der Büchertabelle oben.
Abfrage
Nach der Ausführung der Abfrageanweisung gibt Python einen Looper zurück, der mehrere durch die Abfrage erhaltene Datensätze enthält. Sie können eine Schleife einlesen oder die von sqlite3 bereitgestellten Methoden fetchone() und fetchall() verwenden, um Datensätze zu lesen:
# By Vamei import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() # retrieve one record c.execute('SELECT name FROM category ORDER BY sort') print(c.fetchone()) print(c.fetchone()) # retrieve all records as a list c.execute('SELECT * FROM book WHERE book.category=1') print(c.fetchall()) # iterate through the records for row in c.execute('SELECT name, price FROM book ORDER BY sort'): print(row)
Aktualisieren und löschen
Sie können einen Datensatz aktualisieren oder löschen Eintrag:
# By Vamei conn = sqlite3.connect("test.db") c = conn.cursor() c.execute('UPDATE book SET price=? WHERE id=?',(1000, 1)) c.execute('DELETE FROM book WHERE id=2') conn.commit() conn.close()
Sie können auch direkt die gesamte Tabelle löschen:
c.execute('DROP TABLE book')
Wenn Sie test löschen. db , dann wird die gesamte Datenbank gelöscht.
Zusammenfassung
sqlite3 ist nur eine Schnittstelle zu SQLite. Wenn Sie die SQLite-Datenbank kompetent nutzen möchten, müssen Sie sich mehr Wissen über relationale Datenbanken aneignen.