Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung von Beispielen für Pythons Datenoperationen auf MySQL

Ausführliche Erläuterung von Beispielen für Pythons Datenoperationen auf MySQL

Y2J
Y2JOriginal
2017-04-27 11:47:591357Durchsuche

In diesem Artikel wird Python3 vorgestellt, um mit PyMySQL eine Verbindung zur Datenbank herzustellen und einfache Hinzufügungen, Löschungen, Änderungen und Abfragen zu implementieren. Hat einen sehr guten Referenzwert. Werfen wir einen Blick mit dem Editor unten

In diesem Artikel wird Python3 vorgestellt, um PyMySQL zu verwenden, um eine Verbindung zur Datenbank herzustellen und einfache Hinzufügungen, Löschungen, Änderungen und Abfragen zu implementieren.

Was ist PyMySQL?

PyMySQL ist eine Bibliothek, die in Python 3.x zum Herstellen einer Verbindung zum MySQL-Server verwendet wird, und mysqldb wird in Python 2.x verwendet.

PyMySQL-Installation

Bevor wir PyMySQL verwenden, müssen wir sicherstellen, dass PyMySQL installiert ist.

PyMySQL-Downloadadresse: https://github.com/PyMySQL/PyMySQL.

Wenn es noch nicht installiert ist, können wir den folgenden Befehl verwenden, um die neueste Version von PyMySQL zu installieren:

$ pip install PyMySQL

Wenn Ihr System den Pip nicht unterstützt Mit dem Befehl können Sie die folgende Installationsmethode verwenden:

1. Verwenden Sie den Git-Befehl, um das Installationspaket herunterzuladen (Sie können es auch manuell herunterladen):

$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL
$ python3 setup.py install

2. Wenn Sie eine Versionsnummer angeben müssen, können Sie zur Installation den Curl-Befehl verwenden:

$ # X.X 为PyMySQL 的版本号
$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz
$ cd PyMySQL*
$ python3 setup.py install

Hinweis: Bitte stellen Sie sicher, dass Sie über Root-Rechte verfügen, 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 haben Sie die Tabelle MITARBEITER erstellt

  • Die Tabellenfelder MITARBEITER 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 für die Benutzerautorisierung in MySQL verwenden , verwenden Sie bitte den Grant-Befehl

  • Das PyMySQL-Modul wurde auf Ihrem Computer installiert

Beispiel:

Das folgende Beispiel verweist auf die MySQL-TESTDB-Datenbank:

#!/usr/bin/python3
__author__ = 'mayi'
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询 
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print ("Database version : %s " % data)

# 关闭数据库连接
db.close()

Datenbanktabelle erstellen

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

#!/usr/bin/python3
__author__ = 'mayi'
import pymysql

# 开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

# 使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
 FIRST_NAME CHAR(20) NOT NULL,
 LAST_NAME CHAR(20),
 AGE INT, 
 SEX CHAR(1),
 INCOME FLOAT )"""
cursor.execute(sql)
# 关闭数据库连接
db.close()

Datenbankeinfügeoperation

Das folgende Beispiel verwendet die SQL-Insert-Anweisung, um Datensätze in die Datenbank einzufügen Tabelle MITARBEITER:

#!/usr/bin/python3
__author__ = 'mayi'

import pymysql

# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作游标 
cursor = db.cursor()

# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
 LAST_NAME, AGE, SEX, INCOME)
 VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
 # 执行sql语句
 cursor.execute(sql)
 # 提交到数据库执行
 db.commit()
except:
 # 如果发生错误则回滚
 db.rollback()

# 关闭数据库连接
db.close()

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

#!/usr/bin/python3
__author__ = 'mayi'

import pymysql

# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作游标 
cursor = db.cursor()

# SQL 插入语句
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
 LAST_NAME, AGE, SEX, INCOME) \
 VALUES ('%s', '%s', '%d', '%c', '%d' )" % \
 ('Mac', 'Mohan', 20, 'M', 2000)
try:
 # 执行sql语句
 cursor.execute(sql)
 # 执行sql语句
 db.commit()
except:
 # 发生错误时回滚
 db.rollback()

# 关闭数据库连接
db.close()

Datenbankabfragevorgang

Python fragt MySQL mit der Methode fetchone() ab, um ein einzelnes Datenelement zu erhalten, und mit der Methode fetchall(), um mehrere Datenelemente abzurufen.

  • 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 der Methode „execute()“ zurück

Beispiel:

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

#!/usr/bin/python3
__author__ = 'mayi'

import pymysql

# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作游标 
cursor = db.cursor()

# SQL 查询语句
sql = "SELECT * FROM EMPLOYEE \
 WHERE INCOME > '%d'" % (1000)
try:
 # 执行SQL语句
 cursor.execute(sql)
 # 获取所有记录列表
 results = cursor.fetchall()
 for row in results:
 fname = row[0]
 lname = row[1]
 age = row[2]
 sex = row[3]
 income = row[4]
 # 打印结果
 print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
 (fname, lname, age, sex, income ))
except:
 print ("Error: unable to fecth data")

# 关闭数据库连接
db.close()

Datenbankaktualisierungsvorgang

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

#!/usr/bin/python3
__author__ = 'mayi'

import pymysql

# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作游标 
cursor = db.cursor()

# SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1
 WHERE SEX = '%c'" % ('M')
try:
 # 执行SQL语句
 cursor.execute(sql)
 # 提交到数据库执行
 db.commit()
except:
 # 发生错误时回滚
 db.rollback()

# 关闭数据库连接
db.close()

Löschvorgang

Der Löschvorgang wird zum Löschen von Daten in der Datentabelle verwendet . Das folgende Beispiel zeigt das Löschen von AGE in der Datentabelle EMPLOYEE Alle Daten größer als 20:

#!/usr/bin/python3
__author__ = 'mayi'

import pymysql

# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作游标 
cursor = db.cursor()

# SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
try:
 # 执行SQL语句
 cursor.execute(sql)
 # 提交修改
 db.commit()
except:
 # 发生错误时回滚
 db.rollback()

# 关闭连接
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 nicht ausgeführt.

  • 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.

Instanz

# SQL删除记录语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
try:
 # 执行SQL语句
 cursor.execute(sql)
 # 向数据库提交
 db.commit()
except:
 # 发生错误时回滚
 db.rollback()

Bei Datenbanken, die Transaktionen unterstützen, wird in der Python-Datenbankprogrammierung beim Erstellen des Cursors automatisch ein unsichtbarer Cursor gestartet Datenbanktransaktion.

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

异常 描述
Warning 当有严重警告时触发,例如插入数据是被截断等等。必须是StandardError的子类。
Error 警告以外所有其他错误类。必须是StandardError的子类。
InterfaceError 当有数据库接口模块本身的错误(而不是数据库的错误)发生时触发。必须是Error的子类。
DatabaseError 和数据库有关的错误发生时触发。必须是Error的子类。
DataError 当有数据处理时的错误发生时触发,例如:除零错误,数据超范围等等。必须是DatabaseError的子类。
OperationalError 指非用户控制的,而是操作数据库时发生的错误。例如:连接意外断开、数据库名未找到、事务处理失败、内存分配错误等等操作数据库是发生的错误。必须是DatabaseError的子类。
IntegrityError 完整性相关的错误,例如外键检查失败等。必须是DatabaseError子类。
InternamError 数据库的内部错误,例如游标(cursor)失效了、事务同步失败等等。必须是DatabaseError子类。
ProgrammingError 程序错误,例如数据表(table)没找到或已存在、SQL语句语法错误、参数数量错误等等。必须是DatabaseError的子类。
NotSupportedError 不支持错误,指使用了数据库不支持的函数或API等。例如在连接对象上使用rollback()函数,然而数据库并不支持事务或者事务已关闭。必须是DatabaseError的子类。

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Beispielen für Pythons Datenoperationen auf MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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