English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SQLite3 kann sqlite verwendet werden3 Modul integriert sich mit Python. sqlite3 Modul wurde von Gerhard Haring geschrieben. Es bietet eine Integration mit PEP 249 beschriebene DB-API 2.0-kompatible SQL-Schnittstellen. Sie müssen dieses Modul nicht separat installieren, da Python 2.5.x und höheren Versionen ist dieses Modul standardmäßig enthalten.
Um sqlite zu verwenden3 Modul, Sie müssen zunächst ein Verbindungsobjekt für die Datenbank erstellen, und dann können Sie optional ein Cursorobjekt erstellen, das Ihnen hilft, alle SQL-Anweisungen auszuführen.
Hier sind wichtige sqlite3 Modulprogramme, die Ihre Bedürfnisse an SQLite-Datenbanken in Python-Programmen erfüllen können. Wenn Sie mehr Details erfahren möchten, lesen Sie bitte Python sqlite3 模块的官方文档。
序号 | API & 描述 |
---|---|
1 | sqlite3.connect(database [,timeout ,other optional arguments]) 该 API 打开一个到 SQLite 数据库文件 database 的链接。您可以使用 ":memory:" 来在 RAM 中打开一个到 database 的数据库连接,而不是在磁盘上打开。如果数据库成功打开,则返回一个连接对象。 当一个数据库被多个连接访问,且其中一个修改了数据库,此时 SQLite 数据库被锁定,直到事务提交。timeout 参数表示连接等待锁定的持续时间,直到发生异常断开连接。timeout 参数默认是 5.0(5 秒)。 如果给定的数据库名称 filename 不存在,则该调用将创建一个数据库。如果您不想在当前目录中创建数据库,那么您可以指定带有路径的文件名,这样您就能在任意地方创建数据库。 |
2 | connection.cursor([cursorClass]) 此例程创建一个 cursor,将在 Python 数据库编程中用到。该方法接受一个单一的可选的参数 cursorClass。如果提供了该参数,则它必须是一个扩展自 sqlite3.Cursor 的自定义的 cursor 类。 |
3 | cursor.execute(sql [, optional parameters]) 此例程执行一个 SQL 语句。该 SQL 语句可以被参数化(即使用占位符代替 SQL 文本)。sqlite3 模块支持两种类型的占位符:问号和命名占位符(命名样式)。 例如:cursor.execute("insert into people values (?, ?)", (who, age)) |
4 | connection.execute(sql [, optional parameters]) 此例程是上面执行的由光标(cursor)对象提供的方法的快捷方式,它通过调用光标(cursor)方法创建了一个中间的光标对象,然后通过给定的参数调用光标的 execute 方法。 |
5 | cursor.executemany(sql, seq_of_parameters) 此例程对 seq_of_parameters 中的所有参数或映射执行一个 SQL 命令。 |
6 | connection.executemany(sql[, parameters]) Dieser Vorgang ist eine Kurzform eines intermediären Cursor-Objekts, das durch den Aufruf des Cursor-Methode erstellt wird, und das durch die angegebenen Parameter das executemany-Methode des Cursors aufruft. |
7 | cursor.executescript(sql_script) Dieser Vorgang führt mehrere SQL-Anweisungen aus, sobald der Skript empfangen wird. Zunächst wird das COMMIT-Statement ausgeführt, dann wird der als Parameter übergebene SQL-Skript ausgeführt. Alle SQL-Anweisungen sollten durch Semikolons ; getrennt sein. |
8 | connection.executescript(sql_script) Dieser Vorgang ist eine Kurzform eines intermediären Cursor-Objekts, das durch den Aufruf des Cursor-Methode erstellt wird, und das durch die angegebenen Parameter das executeScript-Methode des Cursors aufruft. |
9 | connection.total_changes() Dieser Vorgang gibt die Gesamtzahl der Datenbankzeilen zurück, die seit der Öffnung der Datenbankverbindung geändert, hinzugefügt oder gelöscht wurden. |
10 | connection.commit() Diese Methode committing des aktuellen Transaktionszustands. Wenn Sie diese Methode nicht aufrufen, sind alle Ihre Aktionen, die seit Ihrem letzten Aufruf von commit() vorgenommen wurden, für andere Datenbankverbindungen nicht sichtbar. |
11 | connection.rollback() Diese Methode rollt die Änderungen an der Datenbank zurück, die seit dem letzten Aufruf von commit() vorgenommen wurden. |
12 | connection.close() Diese Methode schließt die Datenbankverbindung. Bitte beachten Sie, dass dies nicht automatisch commit() aufruft. Wenn Sie die Methode commit() vorher nicht aufgerufen haben, gehen alle Ihre Änderungen verloren, wenn Sie die Datenbankverbindung schließen! |
13 | cursor.fetchone() Diese Methode holt das nächste Zeile aus dem Abfrageergebnis und gibt eine einzelne Sequenz zurück. Wird keine weiteren verfügbaren Daten mehr gefunden, wird None zurückgegeben. |
14 | cursor.fetchmany([size=cursor.arraysize]) Diese Methode holt das nächste Zeilengruppe aus dem Abfrageergebnis und gibt eine Liste zurück. Wird keine weiteren verfügbaren Zeilen mehr gefunden, wird eine leere Liste zurückgegeben. Diese Methode versucht, so viele Zeilen wie möglich, wie durch den size-Parameter angegeben, zu holen. |
15 | cursor.fetchall() Dieser Vorgang holt alle (verbleibenden) Zeilen aus dem Abfrageergebnis und gibt eine Liste zurück. Wird keine verfügbare Zeile mehr gefunden, wird eine leere Liste zurückgegeben. |
Das folgende Python-Codebeispiel zeigt, wie man sich mit einer bestehenden Datenbank verbindet. Wenn die Datenbank nicht existiert, wird sie erstellt und letztlich wird ein Datenbankobjekt zurückgegeben.
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') print "Datenbank erfolgreich geöffnet"
Hier können Sie auch den Datenbanknamen in einen spezifischen Namen kopieren :memory:,so wird eine Datenbank im RAM erstellt. Lassen Sie uns nun den obigen Code ausführen, um unsere Datenbank im aktuellen Verzeichnis zu erstellen test.db。Sie können den Pfad nach Bedarf ändern. Speichern Sie den obigen Code in der Datei sqlite.py und führen Sie ihn wie folgt aus. Wenn die Datenbank erfolgreich erstellt wurde, wird die folgende Meldung angezeigt:
$chmod +x sqlite.py $./sqlite.py Datenbank erfolgreich geöffnet
Der folgende Python-Codeabschnitt wird verwendet, um eine Tabelle in der zuvor erstellten Datenbank zu erstellen:
#!/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 der obige Code ausgeführt wird, erstellt er in der folgenden Weise: test.db Um die COMPANY-Tabelle zu erstellen, zeigt die folgende Meldung an:
Datenbank erfolgreich geöffnet Tabelle erfolgreich erstellt
Der folgende Python-Code zeigt, wie man Daten in der zuvor erstellten COMPANY-Tabelle erstellt:
#!/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 erstellt" conn.close()
Wenn der obige Code ausgeführt wird, erstellt er die angegebenen Daten in der COMPANY-Tabelle und zeigt die folgenden zwei Zeilen an:
Datenbank erfolgreich geöffnet Daten erfolgreich erstellt
Der folgende Python-Code zeigt, wie man Daten aus der zuvor erstellten COMPANY-Tabelle abruft und anzeigt:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() print "Datenbank erfolgreich geöffnet" 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 "Operation done successfully" conn.close()
Bei der Ausführung des obigen Programms wird das folgende Ergebnis erzeugt:
Datenbank erfolgreich geöffnet 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 Operation erfolgreich durchgeführt
Das folgende Python-Codebeispiel zeigt, wie man mit dem UPDATE-Befehl ein beliebiges Record aktualisiert und die aktualisierten Records der Tabelle COMPANY abruft und anzeigt:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() print "Datenbank erfolgreich geöffnet" 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 "Operation done successfully" conn.close()
Bei der Ausführung des obigen Programms wird das folgende Ergebnis erzeugt:
Datenbank erfolgreich geöffnet 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 Operation erfolgreich durchgeführt
Das folgende Python-Codebeispiel zeigt, wie man mit dem DELETE-Befehl ein beliebiges Record löscht und die verbleibenden Records der Tabelle COMPANY abruft und anzeigt:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() print "Datenbank erfolgreich geöffnet" 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 "Operation done successfully" conn.close()
Bei der Ausführung des obigen Programms wird das folgende Ergebnis erzeugt:
Datenbank erfolgreich geöffnet Gesamtzahl der gelöschten Zeilen: 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 Operation erfolgreich durchgeführt