Heim  >  Artikel  >  Backend-Entwicklung  >  Datenbank der Python-Standardbibliothek 14 (SQLite3)

Datenbank der Python-Standardbibliothek 14 (SQLite3)

高洛峰
高洛峰Original
2016-11-23 11:39:111389Durchsuche

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.

Datenbank der Python-Standardbibliothek 14 (SQLite3)

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.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Einführung in PythonNächster Artikel:Einführung in Python