Heim  >  Artikel  >  Datenbank  >  So betreiben Sie MySQL mit Python

So betreiben Sie MySQL mit Python

WBOY
WBOYnach vorne
2023-05-30 16:31:141762Durchsuche

1. Einführung in den Python-Datenbankbetrieb

Pythons Standard-Datenbankschnittstelle ist die Python DB-API, die Entwicklern eine Programmierschnittstelle für Datenbankanwendungen bietet. Python bietet eine breite Palette von Datenbankschnittstellen, um eine Vielzahl von Anforderungen an die Datenbankauswahl zu erfüllen. Sie können eine geeignete Datenbank entsprechend den Anforderungen des Projekts auswählen

    PostgreSQL

  • Microsoft SQL Server 2000

  • Informix

  • Interbase

  • Oracle

  • Sybase…

  • Sie können die Python-Datenbankschnittstelle besuchen und API zum Anzeigen der Details der Support-Datenbankliste.

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

  • 2. Python betreibt das MySQL -Modul

  • Python hauptsächlich mit zwei Möglichkeiten, MySQL zu bedienen:

  • DB -Modul (native SQL)


  • PYMYSQL (unterstützt Python2.x/3.x)



MySQLdb (unterstützt derzeit nur Python2. Die Methode ähnelt


2.1 .1 PyMySQL installieren


PyMySQL ist ein in Python geschriebener MySQL-Treiber, der es uns ermöglicht, die MySQL-Datenbank mit der Python-Sprache zu betreiben. 2.2 Grundlegende Verwendung Bewegen Sie die Cursorposition, zum Beispiel:

  • cursor.scroll(1,mode='relative') # Relativ zur aktuellen Position verschieben

  • cursor.scroll(2, mode='absolute') # Relative absolute Position Mobile

    2.5 verhindert SQL-Injection
  • pip install PyMySQL

    Auf diese Weise sind SQL-Operationen sicherer. Wenn Sie eine detailliertere Dokumentation benötigen, lesen Sie bitte die PyMySQL-Dokumentation. Es scheint jedoch, dass die Implementierung dieser SQL-Datenbanken nicht dieselbe ist. Der Parameterplatzhalter von PyMySQL verwendet C-Formatierer wie %s, während der Platzhalter von Pythons eigenem sqlite3-Modul ein Fragezeichen (?) zu sein scheint. Daher ist es besser, die Dokumentation sorgfältig zu lesen, wenn Sie andere Datenbanken verwenden.

3. Datenbankverbindungspool

Es gibt ein Problem mit der oben genannten Methode, das in einer Single-Threaded-Situation gelöst werden kann. Das Programm muss häufig Verbindungen erstellen und freigeben, um den Betrieb der Datenbank abzuschließen. Unser Programm/Skript kann in mehreren Threads verwendet werden. Welche Probleme werden in diesem Fall verursachen? Zu diesem Zeitpunkt müssen wir den Datenbankverbindungspool verwenden, um dieses Problem zu lösen.


3.1 DBUtils-Modul

DBUtils ist ein Modul in Python Wird zum Implementieren von Datenbankverbindungspools verwendet.


Dieser Verbindungspool verfügt über zwei Verbindungsmodi:


Erstellt eine Verbindung für jeden Thread. Auch wenn der Thread die Close-Methode aufruft, wird er nicht geschlossen Eigener Thread zur erneuten Verwendung. Wenn der Thread beendet wird, wird die Verbindung automatisch geschlossen

Erstellen Sie einen Stapel von Verbindungen zum Verbindungspool, damit alle Threads sie teilen können (empfohlen)


  • 3.2 Modus eins


    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    # __author__ = "shuke"
    # Date: 2018/5/13
    import pymysql
    # 创建连接
    conn = pymysql.connect(host="127.0.0.1", port=3306, user='zff', passwd='zff123', db='zff', charset='utf8mb4')
    # 创建游标(查询数据返回为元组格式)
    # cursor = conn.cursor()
    # 创建游标(查询数据返回为字典格式)
    cursor = conn.cursor(pymysql.cursors.DictCursor)
    # 1. 执行SQL,返回受影响的行数
    effect_row1 = cursor.execute("select * from USER")
    # 2. 执行SQL,返回受影响的行数,一次插入多行数据
    effect_row2 = cursor.executemany("insert into USER (NAME) values(%s)", [("jack"), ("boom"), ("lucy")])# 3
    # 查询所有数据,返回数据为元组格式
    result = cursor.fetchall()
    # 增/删/改均需要进行commit提交,进行保存
    conn.commit()
    # 关闭游标
    cursor.close()
    # 关闭连接
    conn.close()
    print(result)
    """
    [{'id': 6, 'name': 'boom'}, {'id': 5, 'name': 'jack'}, {'id': 7, 'name': 'lucy'}, {'id': 4, 'name': 'tome'}, {'id': 3, 'name': 'zff'}, {'id': 1, 'name': 'zhaofengfeng'}, {'id': 2, 'name': 'zhaofengfeng02'}]
    """

    3.2 Modus zwei
  • #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    # __author__ = "shuke"
    # Date: 2018/5/13
    import pymysql
    # 创建连接
    conn = pymysql.connect(host="127.0.0.1", port=3306, user='zff', passwd='zff123', db='zff', charset='utf8mb4')
    # 创建游标(查询数据返回为元组格式)
    cursor = conn.cursor()
    # 获取新创建数据自增ID
    effect_row = cursor.executemany("insert into USER (NAME)values(%s)", [("eric")])
    # 增删改均需要进行commit提交
    conn.commit()
    # 关闭游标
    cursor.close()
    # 关闭连接
    conn.close()
    new_id = cursor.lastrowid
    print(new_id)
    """
    8
    """

    ⚠️ Da der Threadsicherheitswert von pymysql, MySQLdb usw. 1 ist, werden die Threads im Verbindungspool in diesem Modus von allen Threads gemeinsam genutzt, sodass sie Thread-sicher sind. Wenn kein Verbindungspool vorhanden ist und pymysql zum Herstellen einer Verbindung mit der Datenbank verwendet wird, gibt es bei Single-Thread-Anwendungen kein Problem. Wenn jedoch Multi-Thread-Anwendungen beteiligt sind, ist eine Sperre erforderlich . Bei vielen Anfragen nimmt die Leistung ab. 3.3 Sperrung Wird in Verbindung mit pymsql verwendet

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    # __author__ = "shuke"
    # Date: 2018/5/13
    import pymysql
    # 创建连接
    conn = pymysql.connect(host="127.0.0.1", port=3306, user='zff', passwd='zff123', db='zff', charset='utf8mb4')
    # 创建游标
    cursor = conn.cursor()
    cursor.execute("select * from USER")
    # 获取第一行数据
    row_1 = cursor.fetchone()
    # 获取前n行数据
    row_2 = cursor.fetchmany(3)
    #
    # # 获取所有数据
    row_3 = cursor.fetchall()
    # 关闭游标
    cursor.close()
    # 关闭连接
    conn.close()
    print(row_1)
    print(row_2)
    print(row_3)
  • PS: Sie können statische Methoden verwenden, um sie zur einfacheren Verwendung in einer Klasse zu kapseln

Das obige ist der detaillierte Inhalt vonSo betreiben Sie MySQL mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen