Eine kurze Einführung
Die SQLite-Datenbank ist eine sehr kleine eingebettete Open-Source-Datenbanksoftware, was bedeutet, dass es keinen unabhängigen Wartungsprozess gibt und die gesamte Wartung vom Programm selbst erfolgt. Es handelt sich um ein relationales Datenbankverwaltungssystem, das dem ACID-Standard entspricht und in vielen eingebetteten Produkten verwendet wird. In eingebetteten Geräten sind möglicherweise nur wenige 100 K Speicher erforderlich genug. Es kann gängige Betriebssysteme wie Windows/Linux/Unix unterstützen und mit vielen Programmiersprachen wie Tcl, C#, PHP, Java usw. sowie ODBC-Schnittstellen kombiniert werden. Es wird auch mit den beiden offenen Schnittstellen verglichen Im Vergleich zu den bekannten Datenbankverwaltungssystemen ist die Verarbeitungsgeschwindigkeit schneller als bei allen anderen. Die erste Alpha-Version von SQLite wurde im Mai 2000 geboren. Es ist nun 10 Jahre her und SQLite hat auch die Veröffentlichung einer Version von SQLite 3 eingeläutet.
Installation und Verwendung
1. Importieren Sie das Python SQLITE-Datenbankmodul
Nach Python2. 5, integriertes SQLite3, wurde zu einem integrierten Modul, das uns den Installationsaufwand erspart. Importieren Sie es einfach~
import sqlite3
2. Erstellen/ Datenbank öffnen
Geben Sie beim Aufruf der Verbindungsfunktion den Bibliotheksnamen an. Wenn die angegebene Datenbank vorhanden ist, öffnen Sie sie direkt. Wenn sie nicht vorhanden ist, erstellen Sie eine neue.
cx = sqlite3.connect("E:/test.db")
Sie können auch eine Datenbank im Speicher erstellen.
con = sqlite3.connect(":memory:")
3. Datenbankverbindungsobjekt
Das beim Öffnen der Datenbank zurückgegebene Objekt cx ist ein Datenbankverbindungsobjekt, das die folgenden Vorgänge haben kann:
commit()--Transaktionsübermittlung
rollback()--Transaktions-Rollback
close()--Schließen eine Datenbankverbindung
cursor() – Erstellen Sie einen Cursor
Wenn in Bezug auf commit() die Isolationsstufe „isolation_level“ die Standardeinstellung ist, müssen Sie diesen Befehl für jede Operation in der Datenbank verwenden. Sie können auch „isolation_level=None“ festlegen, um in den Auto-Commit-Modus zu wechseln.
4. Verwenden Sie den Cursor, um die Datenbank abzufragen.
Wir müssen die SQL-Anweisung des Cursorobjekts verwenden, um die Datenbank abzufragen und das Abfrageobjekt abzurufen. Definieren Sie einen Cursor auf folgende Weise.
cu=cx.cursor()
Das Cursorobjekt verfügt über die folgenden Operationen:
execute() – SQL-Anweisung ausführen
executemany – mehrere SQL-Anweisungen ausführen
close() – den Cursor schließen
fetchone() – einen Datensatz aus dem Ergebnis übernehmen und den Cursor auf den nächsten Datensatz zeigen
fetchmany() – mehrere Datensätze aus dem Ergebnis abrufen
fetchall() – alle Datensätze aus dem Ergebnis abrufen
scroll() – Cursor-Scrollen
1. Tabelle erstellen
cu.execute("Tabellenkatalog erstellen (ID-Ganzzahl-Primärschlüssel, PID-Ganzzahl, Name varchar(10) UNIQUE, Spitzname-Text NULL)")
Die obige Anweisung erstellt eine Tabelle mit dem Namen „Katalog“, die über eine Primärschlüssel-ID, eine PID und einen Namen verfügt. Der Name kann nicht wiederholt werden und ein Spitzname ist standardmäßig NULL.
2. Daten einfügen
Bitte vermeiden Sie die folgende Schreibweise:
# Tun Sie dies niemals – unsicher führt zu Injektionsangriffen pid=200c. ausführen ("...wo pid = '%s'" % pid)
Der richtige Ansatz ist wie folgt. Wenn t nur ein einzelner Wert ist, muss er auch die Form t=(n haben ,), da Tupel nicht geändert werden.
für t in[(0,10,'abc','Yu'),(1,20,'cba','Xu')]: cx.execute("in Katalogwerte einfügen (? ,?,?,?)", t)
Fügen Sie einfach zwei Datenzeilen ein. Beachten Sie jedoch, dass dies erst nach der Übermittlung wirksam wird. Wir verwenden das Datenbankverbindungsobjekt cx to Rollback-Vorgang senden und zurückgeben.
cx.commit()
3. Abfrage
cu.execute("select * aus Katalog")
Um die abgefragten Daten zu extrahieren, verwenden Sie die Abruffunktion des Cursors, wie zum Beispiel:
In [10]: cu.fetchall() Out[10]: [ (0, 10 , u'abc', u'Yu'), (1, 20, u'cba', u'Xu')]
Wenn wir cu.fetchone() verwenden, das erste in der Liste wird zurückgegeben. Wenn ein Element erneut verwendet wird, wird zum zweiten Element zurückgekehrt und der Reihe nach fortgefahren
4. Ändern
In [12]: cu.execute("update Catalog Set Name ='Boy' where id = 0") In [13]: cx.commit()
Hinweis: Nach Änderung der Daten senden
5. Löschen
cu.execute("delete from Catalog where id = 1") cx.commit()
6 >
Bitte bestätigen Sie zuerst Ihre IDE. Oder die Standardcodierung des Systems ist utf-8, und fügen Sie uvor Chinesisch hinzu
x=u'鱼' cu.execute("Katalogsatzname aktualisieren=?, wobei ID = 0",x) cu.execute("Auswählen * aus Katalog") cu.fetchall() [(0, 10, u'u9c7c', u'Yu'), (1, 20, u'cba', u'Xu')]
Wenn Sie chinesische Schriftarten anzeigen möchten, müssen Sie jede Zeichenfolge nacheinander ausdrucken
In [26]: für Element in cu.fetchall(): ....: für Element in Element: ....: Druckelement, ....: Drucken . ...: 0 10 fish Yu 1 20 cba Der Originaltext lautet wie folgt:
sqlite3.Row bietet sowohl indexbasierten als auch namenbasierten Zugriff ohne Berücksichtigung der Groß- und Kleinschreibung, fast ohne Speicheraufwand. Es wird wahrscheinlich besser sein als Ihr eigener benutzerdefinierter wörterbuchbasierter Ansatz oder sogar eine db_row-basierte Lösung.
Detaillierte Einführung des Row-Objekts
Klasse sqlite3.Row
Eine Row-Instanz dient als hochoptimierte row_factory für Verbindungsobjekte. Sie versucht, in den meisten ihrer Funktionen ein Tupel nachzuahmen.
Es unterstützt den Zuordnungszugriff nach Spaltenname und Index, Iteration, Darstellung, Gleichheitstests und len().
Wenn zwei Zeilenobjekte genau die gleichen Spalten haben und ihre Mitglieder gleich sind, sind sie im Vergleich gleich.
Geändert in Version 2.6: Iteration und Gleichheit (Hashbarkeit) hinzugefügt.
keys( )
Diese Methode gibt unmittelbar nach einer Abfrage das erste Mitglied jedes Tupels in Cursor.description zurück.
Neu in Version 2.6.