Heim >Backend-Entwicklung >Python-Tutorial >Python verwendet das SQLite3-Modul, um die SQLite-Datenbank zu betreiben
SQLite ist eine leichtgewichtige Datenbank, die in einer C-Bibliothek enthalten ist. Es erfordert keinen separaten Wartungsprozess und ermöglicht die Verwendung nicht standardmäßiger Varianten von SQL-Abfragen für den Zugriff auf die Datenbank.
Einige Anwendungen verwenden SQLite, um interne Daten zu speichern. Es kann auch beim Prototyping von Anwendungen für die spätere Übertragung in größere Datenbanken verwendet werden.
Die Hauptvorteile von SQLite:
1. Konsistentes Dateiformat:
Dies wird in der offiziellen Dokumentation von SQLite erklärt. Wir sollten SQLite nicht mit Oracle oder PostgreSQL vergleichen Vergleichen Sie, dass SQLite im Vergleich zu unseren Datendateien im benutzerdefinierten Format nicht nur eine gute
Portabilität wie Big-Endian, Little-Endian, 32/64-Bit und andere plattformbezogene Probleme bietet, sondern auch Daten bereitstellt Effizienz des Zugriffs, z. B. Erstellen eines Index basierend auf bestimmten Informationen, wodurch die Leistung beim Zugriff oder beim Sortieren dieser Art von Daten verbessert wird. Die von SQLite bereitgestellte Transaktionsfunktion kann beim Betrieb normaler Dateien nicht effektiv garantiert werden.
2. Anwendung auf eingebetteten oder mobilen Geräten:
Da SQLite zur Laufzeit weniger Ressourcen beansprucht und keinen Verwaltungsaufwand erfordert, ist es für PDAs und Smartphones geeignet und anderen
Mobilgeräten sind die Vorteile von SQLite unbestritten.
3. Interne Datenbank:
In einigen Anwendungsszenarien müssen wir eine Datenfilterung oder Datenbereinigung für die in den Datenbankserver eingefügten Daten durchführen, um die endgültige Einfügung sicherzustellen Datengültigkeit für den Datenbankserver. Manchmal kann nicht anhand eines einzelnen Datensatzes beurteilt werden, ob die Daten gültig sind. Stattdessen müssen spezielle Berechnungen mit den historischen Daten eines kurzen Zeitraums durchgeführt werden, und dann werden die Berechnungsergebnisse verwendet, um zu beurteilen, ob die aktuellen Daten zulässig sind .
In dieser Anwendung können wir SQLite verwenden, um diesen Teil der historischen Daten zu puffern. Es gibt ein weiteres einfaches Szenario, das auch für SQLite gilt, nämlich die Vorberechnung von Statistiken. Wenn wir beispielsweise ein Dienstprogramm ausführen, das Daten in Echtzeit sammelt, müssen wir die Daten möglicherweise alle 10 Sekunden zusammenfassen, um stündliche Statistiken zu erstellen. Diese Statistiken können die Datenmenge bei Benutzerabfragen erheblich reduzieren und dadurch die Front erheblich verbessern -End-Programm. Abfrageeffizienz. In dieser Anwendung können wir die gesammelten Daten innerhalb einer Stunde in SQLite zwischenspeichern und bei Erreichen der Stunde die zwischengespeicherten Daten berechnen und die Daten löschen.
4. Datenanalyse:
Sie können die von SQLite bereitgestellten SQL-Funktionen vollständig nutzen, um einfache Funktionen zur statistischen Datenanalyse durchzuführen. Dies wird von Yaml- und CSV-Dateien nicht erreicht.
Meiner Meinung nach ist es sehr klein und sehr gut für temporäre Datenbanken geeignet. Die Migration von Daten ist sehr einfach, übertragen Sie die Datei einfach direkt. Tatsächlich habe ich mich von Anfang an für LevelDB entschieden, aber seine Funktionen ähneln NoSQL, sodass einige leicht komplexe Abfragen etwas mühsam sind.
1. Erstellen Sie eine neue Datenbank: sqlite3-Dateiname
Diese test.db speichert alle Daten.
sqlite3 rui.db
2. Öffnen Sie eine vorhandene Datenbank: sqlite3 Vorhandener Dateiname
Erstellen Sie eine neue Datenbank und öffnen Sie eine. Die Befehle für die vorhandene Datenbanken sind genau gleich. Wenn die Datei nicht im aktuellen Verzeichnis vorhanden ist, öffnen Sie sie.
3. Daten importieren: .read-Datendatei
Öffnen Sie Notepad, kopieren Sie die folgenden SQL-Anweisungen in Notepad und speichern Sie sie wie oben erwähnt in der Datenbank als test.sql Geben Sie im Verzeichnis
.read test.sql
in die Befehlszeilenumgebung ein, um alle Daten in die Datenbank rui.db zu importieren.
4. Alle Datentabellen auflisten: .tables
Nach Abschluss aller oben genannten Arbeiten können wir alle Datentabellen auflisten
[root@devops-ruifengyun /tmp ]$ sqlite3 rui.db SQLite version 3.7.17 2013-05-20 00:56:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .tables ceshi tbl1 sqlite> sqlite>
5. Zeigen Sie die Datenbankstruktur an: .schema
sind eigentlich einige SQL-Anweisungen. Sie beschreiben die Struktur der Datenbank, wie in der Abbildung gezeigt
sqlite> .schema CREATE TABLE tbl1(one varchar(10), two smallint); CREATE TABLE ceshi (user text, note text);
6. Zeigen Sie die Struktur der Tabelle an: .schema-Tabellenname
sqlite> .schema ceshi CREATE TABLE ceshi (user text, note text)
7 : .dump Tabellenname
sqlite> .dump tbl1 PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE tbl1(one varchar(10), two smallint); INSERT INTO "tbl1" VALUES('goodbye',20); INSERT INTO "tbl1" VALUES('hello!',10); COMMIT;
Erklären wir die Verwendung von Python SQLite3. Tatsächlich ist es MySQL sehr ähnlich
import sqlite3 #原文: xiaorui.cc #链接数据库文,sqlite都是以文件的形式存在的。 #如果数据库文件不存在,回新建一个,如果存在则打开此文件 conn = sqlite3.connect('example') c = conn.cursor() #创建table c.execute('''create table ceshi (user text, note text)''') # 插入数据,执行SQL语句 c.execute('''insert into ceshi (user,note) values('mPfiJRIH9T','mPfiJRIH9T')''') c.execute('''insert into ceshi (user,note) values('7IYcUrKWbw','7IYcUrKWbw')''') c.execute('''insert into ceshi (user,note) values('bXB9VcPdnq','bXB9VcPdnq')''') c.execute('''insert into ceshi (user,note) values('2JFk7EWcCz','2JFk7EWcCz')''') c.execute('''insert into ceshi (user,note) values('QeBFAlYdPr','QeBFAlYdPr')''') c.execute('''insert into ceshi (user,note) values('bDL4T69rsj','bDL4T69rsj')''') c.execute('''insert into ceshi (user,note) values('BOxPqmkEd9','BOxPqmkEd9')''') c.execute('''insert into ceshi (user,note) values('rvBegjXs16','rvBegjXs16')''') c.execute('''insert into ceshi (user,note) values('CWrhA2eSmQ','CWrhA2eSmQ')''') c.execute('''insert into ceshi (user,note) values('qQicfV2gvG','qQicfV2gvG')''') c.execute('''insert into ceshi (user,note) values('s3vg1EuBQb','s3vg1EuBQb')''') c.execute('''insert into ceshi (user,note) values('Lne4xj3Xpc','Lne4xj3Xpc')''') c.execute('''insert into ceshi (user,note) values('PH3R86CKDT','PH3R86CKDT')''') c.execute('''insert into ceshi (user,note) values('HEK7Ymg0Bw','HEK7Ymg0Bw')''') c.execute('''insert into ceshi (user,note) values('lim2OCxhQp','lim2OCxhQp')''') c.execute('''insert into ceshi (user,note) values('kVFfLljBJI','kVFfLljBJI')''') c.execute('''insert into ceshi (user,note) values('Hpbs3VOXNq','Hpbs3VOXNq')''') c.execute('''insert into ceshi (user,note) values('f5ubmznBIE','f5ubmznBIE')''') c.execute('''insert into ceshi (user,note) values('beJCQA2oXV','beJCQA2oXV')''') c.execute('''insert into ceshi (user,note) values('JyPx0iTBGV','JyPx0iTBGV')''') c.execute('''insert into ceshi (user,note) values('4S7RQTqw2A','4S7RQTqw2A')''') c.execute('''insert into ceshi (user,note) values('ypDgkKi27e','ypDgkKi27e')''') c.execute('''insert into ceshi (user,note) values('Anrwx8SbIk','Anrwx8SbIk')''') c.execute('''insert into ceshi (user,note) values('k5ZJFrd8am','k5ZJFrd8am')''') c.execute('''insert into ceshi (user,note) values('KYcTv54QVC','KYcTv54QVC')''') c.execute('''insert into ceshi (user,note) values('Jv6OyfMA0g','Jv6OyfMA0g')''') c.execute('''insert into ceshi (user,note) values('kpSLsQYzuV','kpSLsQYzuV')''') c.execute('''insert into ceshi (user,note) values('u2zkJQWdOY','u2zkJQWdOY')''') c.execute('''insert into ceshi (user,note) values('D0aspFbW8c','D0aspFbW8c')''') c.execute('''insert into ceshi (user,note) values('CwqhvDOrWZ','CwqhvDOrWZ')''') c.execute('''insert into ceshi (user,note) values('Tdy5LA9sWO','Tdy5LA9sWO')''') c.execute('''insert into ceshi (user,note) values('76HnRVbLX0','76HnRVbLX0')''') c.execute('''insert into ceshi (user,note) values('B3aoFibRPV','B3aoFibRPV')''') c.execute('''insert into ceshi (user,note) values('7Q6lNdL5JP','7Q6lNdL5JP')''') c.execute('''insert into ceshi (user,note) values('Hsob6Jyv4A','Hsob6Jyv4A')''') #将变动保存到数据库文件,如果没有执行词语句,则前面的insert 语句操作不会被保存 conn.commit() c.execute('''select * from ceshi ''').fetchall() #得到所有的记录 rec = c.execute('''select * from ceshi''') print c.fetchall()