Heim >php教程 >PHP开发 >Python betreibt die MySQL-Datenbank

Python betreibt die MySQL-Datenbank

高洛峰
高洛峰Original
2016-11-23 11:31:131508Durchsuche

Pythons Standard-Datenbankschnittstelle ist die Python DB-API, die Entwicklern eine Programmierschnittstelle für Datenbankanwendungen bietet.

Die Python-Datenbankschnittstelle unterstützt viele Datenbanken. Sie können die Datenbank auswählen, die zu Ihrem Projekt passt:

GadFly

mSQL

MySQL

PostgreSQL

Microsoft SQL Server 2000

Informix

Interbase

Oracle

Sybase

Sie können darauf zugreifen Python-Datenbankschnittstellen und APIs Sehen Sie sich die detaillierte Liste der unterstützten Datenbanken an.

Sie müssen verschiedene DB-API-Module für verschiedene Datenbanken herunterladen. Wenn Sie beispielsweise auf Oracle-Datenbank- und MySQL-Daten zugreifen müssen, müssen Sie Oracle- und MySQL-Datenbankmodule herunterladen.

DB-API ist eine Spezifikation. Sie definiert eine Reihe notwendiger Objekte und Datenbankzugriffsmethoden, um konsistente Zugriffsschnittstellen für verschiedene zugrunde liegende Datenbanksysteme und verschiedene Datenbankschnittstellenprogramme bereitzustellen.

Die DB-API von Python implementiert Schnittstellen für die meisten Datenbanken. Nachdem Sie sie zum Herstellen einer Verbindung zu jeder Datenbank verwendet haben, können Sie jede Datenbank auf die gleiche Weise bedienen.

Python DB-API-Nutzungsprozess:

Einführung des API-Moduls.

Stellen Sie die Verbindung zur Datenbank her.

SQL-Anweisungen und gespeicherte Prozeduren ausführen.

Schließen Sie die Datenbankverbindung.

Was ist MySQLdb?

MySQLdb ist eine Schnittstelle für Python zur Verbindung mit der MySQL-Datenbank. Sie implementiert die Python-Datenbank-API-Spezifikation V2.0 und basiert auf der MySQL-C-API.

Wie installiere ich MySQLdb?

Um MySQL-Skripte mit der DB-API zu schreiben, müssen Sie sicherstellen, dass MySQL installiert ist. Kopieren Sie den folgenden Code und führen Sie ihn aus:

#!/usr/bin/python

import MySQLdb

Wenn die Ausgabe nach der Ausführung wie folgt lautet, bedeutet dies, dass Sie das MySQLdb-Modul nicht installiert haben:

Traceback (letzter Aufruf zuletzt):

Datei „test.py“, Zeile 3, in

MySQLdb importieren

ImportError: Kein Modul benannt MySQLdb

Um MySQLdb zu installieren, besuchen Sie bitte http://sourceforge.net/projects/mysql-python. Von hier aus können Sie das für Sie geeignete Installationspaket auswählen Plattform. Installieren Sie Pakete für vorkompilierte Binärdateien und Quellcode.

Wenn Sie die Binärdateiverteilungsversion wählen, kann der Installationsvorgang mit grundlegenden Installationsaufforderungen abgeschlossen werden. Wenn Sie von der Quelle installieren, müssen Sie in das oberste Verzeichnis der MySQLdb-Distribution wechseln und den folgenden Befehl eingeben:

$ gunzip MySQL- python-1.2.2.tar.gz

$ tar -xvf MySQL-python-1.2.2.tar

$ cd MySQL-python-1.2.2

$ python setup.py build

$ python setup.py install

Hinweis: Bitte stellen Sie sicher, dass Sie Root-Rechte haben, um die oben genannten Module zu installieren.

Datenbankverbindung

Bevor Sie eine Verbindung zur Datenbank herstellen, bestätigen Sie bitte Folgendes:

Sie haben die Datenbank TESTDB erstellt.

In der TESTDB-Datenbank sind Sie erstellt haben. Die Felder der Tabelle EMPLOYEE

EMPLOYEE sind VORNAME, NACHNAME, ALTER, GESCHLECHT und EINKOMMEN.

Der Benutzername, der für die Verbindung zur Datenbank TESTDB verwendet wird, ist „testuser“ und das Passwort ist „test123“. Sie können es selbst festlegen oder direkt den Root-Benutzernamen und das Passwort verwenden. Für die Benutzerautorisierung der MySQL-Datenbank verwenden Sie bitte den Grant-Befehl.

Das Python MySQLdb-Modul ist bereits auf Ihrem Computer installiert.

Wenn Sie mit SQL-Anweisungen nicht vertraut sind, können Sie unser grundlegendes SQL-Tutorial besuchen

Beispiele:

Die folgenden Beispiele verweisen auf die TESTDB-Datenbank von MySQL:

#!/usr/bin/python

MySQLdb importieren

# Datenbank öffnen Verbindung

db = MySQLdb.connect("localhost","testuser","test123","TESTDB")

# Verwenden Sie zum Abrufen die Cursor()-Methode der Operationscursor

cursor = db.cursor()

# Verwenden Sie die Ausführungsmethode, um SQL-Anweisungen auszuführen

cursor.execute("SELECT VERSION ()")

# Verwenden Sie die Methode fetchone(), um eine Datenbank abzurufen.

data = Cursor.fetchone()

print "Datenbankversion: %s " % Daten

# Schließen Sie die Datenbank verbinden

db.close()

Führen Sie das obige Skript aus und das Ausgabeergebnis ist wie folgt:

Datenbankversion: 5.0.45

Datenbanktabelle erstellen

Wenn die Datenbankverbindung besteht, melden wir uns Sie können die Methodeexecute() verwenden. Erstellen Sie eine Tabelle für die Datenbank und erstellen Sie die Tabelle EMPLOYEE wie folgt:

#!/usr/bin/python

MySQLdb importieren

# Datenbankverbindung öffnen

db = MySQLdb.connect("localhost","testuser","test123", "TESTDB")

# Verwenden Sie die Cursor()-Methode, um den Operationscursor zu erhalten

cursor = db.cursor()

# Wenn die Datentabelle bereits vorhanden ist, löscht die Methode „execute()“ die Tabelle.

cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

# Datentabelle erstellen SQL-Anweisung

sql = """CREATE TABLE EMPLOYEE (

FIRST_NAME CHAR(20) NOT NULL,

NACHNAME CHAR(20),

AGE INT,

SEX CHAR(1),

INCOME FLOAT )"""

cursor.execute(sql)

# Datenbankverbindung schließen

db.close ()

Datenbankeinfügungsvorgang

Das folgende Beispiel verwendet die SQL-Anweisung INSERT, um Datensätze in die Tabelle EMPLOYEE einzufügen:

#!/usr/bin/python

MySQLdb importieren

# Datenbank öffnen Verbindung

db = MySQLdb.connect("localhost","testuser","test123","TESTDB")

# Verwenden Sie zum Abrufen die Cursor()-Methode der Operationscursor

cursor = db.cursor()

# SQL-Einfügeanweisung

sql = """INSERT INTO EMPLOYEE(FIRST_NAME,

NACHNAME, ALTER, GESCHLECHT, EINKOMMEN)

WERTE ('Mac', 'Mohan', 20, 'M', 2000)""

versuchen Sie:

# SQL-Anweisung ausführen

Cursor.execute(sql)

# Zur Ausführung an die Datenbank senden

db.commit()

außer :

# Rollback im Fehlerfall

db.rollback()

# Datenbankverbindung schließen

db .close()

Das obige Beispiel kann auch in der folgenden Form geschrieben werden:

#!/usr/bin/python

MySQLdb importieren

# Datenbankverbindung öffnen

db = MySQLdb. connect("localhost","testuser","test123 ","TESTDB" )

# Verwenden Sie die Cursor()-Methode, um den Operationscursor

cursor = zu erhalten db.cursor()

# SQL-Einfügeanweisung

sql = "INSERT INTO EMPLOYEE(FIRST_NAME,

NACHNAME, ALTER, GESCHLECHT, EINKOMMEN)

VALUES ('%s', '% s', '%d', '%c', '%d' )" %

('Mac', 'Mohan', 20, 'M', 2000)

versuchen Sie:

# SQL-Anweisung ausführen

Cursor.execute(sql)

# Zur Ausführung an die Datenbank senden

db.commit()

außer:

# Rollback, wenn ein Fehler auftritt

db.rollback()

# Datenbankverbindung schließen

db. close()

Beispiel:

Der folgende Code verwendet Variablen zur Übergabe von Parametern an die SQL-Anweisung:

....................... ......

user_id = "test123"

password = "password"

con.execute('insert into Login-Werte( "%s", "%s")' %

(Benutzer-ID, Passwort))

.................. .........

Datenbankabfragevorgang

Python fragt MySQL mithilfe der fetchone()-Methode ab, um ein einzelnes Stück zu erhalten von Daten und die fetchall()-Methode zum Abrufen mehrerer Datenelemente.

fetchone(): Diese Methode ruft den nächsten Abfrageergebnissatz ab. Die Ergebnismenge ist ein Objekt

fetchall(): empfängt alle zurückgegebenen Ergebniszeilen

rowcount: Dies ist ein schreibgeschütztes Attribut und gibt die Anzahl der betroffenen Zeilen nach der Ausführung vonexecute( zurück. ) Methode.

Beispiel:

Fragen Sie alle Daten in der EMPLOYEE-Tabelle ab, deren Gehaltsfeld größer als 1000 ist:

#!/ usr/bin/python

MySQLdb importieren

# Datenbankverbindung öffnen

db = MySQLdb.connect("localhost" ,"testuser","test123","TESTDB" )

# Verwenden Sie die Cursor()-Methode, um den Operationscursor zu erhalten

cursor = db.cursor()

# SQL-Abfrageanweisung

sql = "SELECT * FROM EMPLOYEE

WHERE INCOME > '%d'" % (1000)

try:

# SQL-Anweisung ausführen

Cursor.execute(sql)

# Liste aller Datensätze abrufen

results = Cursor.fetchall()

für Zeile in Ergebnissen:

fname = row[0]

lname = row[1]

age = row[2]

sex = row[3]

Einkommen = row[4]

# Drucken Sie das Ergebnis

print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" %

(fname, lname, age, Geschlecht, Einkommen )

außer:

print „Fehler: Daten konnten nicht abgerufen werden“

# Datenbankverbindung schließen

db .close( )

Das Ausführungsergebnis des obigen Skripts ist wie folgt:

fname=Mac, lname=Mohan, Alter=20, Geschlecht=M, Einkommen=2000

Datenbankaktualisierungsvorgang

Der Aktualisierungsvorgang wird verwendet, um die Daten in der Datentabelle zu aktualisieren. Das folgende Beispiel ändert alle SEX-Felder in der TESTDB-Tabelle in „M“ und erhöht das AGE-Feld um 1:

#!/usr/bin/python

MySQLdb importieren

# Datenbankverbindung öffnen

db = MySQLdb.connect("localhost","testuser","test123" ,"TESTDB" )

# Verwenden Sie die Cursor()-Methode, um den Operationscursor

abzurufen Cursor = db.cursor()

#SQL-Update-Anweisung

SQL = "UPDATE EMPLOYEE SET AGE = Age 1

Where Sex = '% C'"%('M')

Versuchen Sie:

# SQL-Anweisung ausführen

Cursor.execute(sql)

# An Datenbank senden für Ausführung

db.commit()

außer :

# Rollback, wenn ein Fehler auftritt

db.rollback()

# Datenbankverbindung schließen

db.close( )

Transaktionen ausführen

Der Transaktionsmechanismus kann die Datenkonsistenz sicherstellen.

Transaktionen sollten 4 Attribute haben: Atomizität, Konsistenz, Isolation und Haltbarkeit. Diese vier Eigenschaften werden oft als ACID-Eigenschaften bezeichnet.

Atomizität. Eine Transaktion ist eine unteilbare Arbeitseinheit. Alle in der Transaktion enthaltenen Vorgänge werden entweder ausgeführt oder keine davon.

Konsistenz. Eine Transaktion muss die Datenbank von einem Konsistenzzustand in einen anderen ändern. Konsistenz und Atomizität hängen eng zusammen.

Isolation. Die Ausführung einer Transaktion kann nicht durch andere Transaktionen beeinträchtigt werden. Das heißt, die innerhalb einer Transaktion verwendeten Vorgänge und Daten sind von anderen gleichzeitigen Transaktionen isoliert und gleichzeitig ausgeführte Transaktionen können sich nicht gegenseitig stören.

Haltbarkeit. Kontinuität, auch Permanenz genannt, bedeutet, dass die Änderungen an den Daten in der Datenbank dauerhaft sein sollten, sobald eine Transaktion festgeschrieben wurde. Nachfolgende Operationen oder Ausfälle sollten keine Auswirkungen darauf haben.

Python DB API 2.0-Transaktionen bieten zwei Methoden zum Festschreiben oder Zurücksetzen.

Beispiel:

# SQL-Anweisung zum Löschen von Datensätzen

sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d '" % (20)

versuchen Sie:

#SQL-Anweisung ausführen

Cursor.execute(sql)

#An die Datenbank senden

db.commit()

außer:

# Rollback, wenn ein Fehler auftritt

db.rollback()

Bei Datenbanken, die Transaktionen unterstützen, wird bei der Python-Datenbankprogrammierung beim Erstellen des Cursors automatisch eine unsichtbare Datenbanktransaktion gestartet.

Die commit()-Methode führt alle Aktualisierungsvorgänge am Cursor aus und die rollback()-Methode setzt alle Vorgänge am aktuellen Cursor zurück. Jede Methode startet eine neue Transaktion.

Fehlerbehandlung

DB-API definiert einige Fehler und Ausnahmen für Datenbankoperationen. Die folgende Tabelle listet diese Fehler und Ausnahmen auf:

Ausnahme

Beschreibung

Eine Warnung wird ausgelöst, wenn eine schwerwiegende Warnung vorliegt, z. B. wenn die eingegebenen Daten abgeschnitten werden usw. Muss eine Unterklasse von StandardError sein.

Fehler Alle anderen Fehlertypen außer Warnungen. Muss eine Unterklasse von StandardError sein.

InterfaceError Wird ausgelöst, wenn ein Fehler im Datenbankschnittstellenmodul selbst auftritt (kein Fehler in der Datenbank). Muss eine Unterklasse von Error sein.

DatabaseError Wird ausgelöst, wenn ein Fehler im Zusammenhang mit der Datenbank auftritt. Muss eine Unterklasse von Error sein.

DataError Wird ausgelöst, wenn während der Datenverarbeitung ein Fehler auftritt, z. B. ein Fehler bei der Division durch Null, Daten außerhalb des zulässigen Bereichs usw. Muss eine Unterklasse von DatabaseError sein.

OperationalError bezieht sich auf Fehler, die nicht vom Benutzer kontrolliert werden, aber beim Betrieb der Datenbank auftreten. Beispiele: Die Verbindung wird unerwartet getrennt, der Datenbankname wird nicht gefunden, die Transaktionsverarbeitung schlägt fehl, Speicherzuordnungsfehler usw. sind Fehler, die beim Betrieb der Datenbank auftreten. Muss eine Unterklasse von DatabaseError sein.

IntegrityError Integritätsbezogene Fehler, wie z. B. ein Fehler bei der Fremdschlüsselprüfung usw. Muss eine DatabaseError-Unterklasse sein.

InternalError Interner Fehler der Datenbank, z. B. Cursorfehler, Transaktionssynchronisierungsfehler usw. Muss eine DatabaseError-Unterklasse sein.

ProgrammingError Programmierfehler, z. B. Datentabelle nicht gefunden oder bereits vorhanden, Syntaxfehler der SQL-Anweisung, falsche Anzahl von Parametern usw. Muss eine Unterklasse von DatabaseError sein.

NotSupportedError Der Fehler „Nicht unterstützt“ bezieht sich auf die Verwendung von Funktionen oder APIs, die von der Datenbank nicht unterstützt werden. Beispielsweise wird die Funktion .rollback() für das Verbindungsobjekt verwendet, die Datenbank unterstützt jedoch keine Transaktionen oder die Transaktion wurde geschlossen. Muss eine Unterklasse von DatabaseError sein.


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