Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So stellen Sie mit Python eine Verbindung zu MySQL her

Python bietet mehrere Möglichkeiten, eine Verbindung zu einer MySQL-Datenbank herzustellen und Daten zu verarbeiten. Dieser Artikel beschreibt drei Methoden.

Die MySQL-Datenbanken und -Benutzer müssen bereits vorhanden sein, bevor Sie eine der folgenden Methoden verwenden können. Informationen zur Verwaltung von MySQL-Datenbanken mit cPanel finden Sie in diesem Artikel.

Mit Python eine Verbindung zu MySQL herstellen

Bevor Sie mit Python auf MySQL-Datenbanken zugreifen können, müssen Sie eines (oder mehrere) der folgenden Pakete in einer virtuellen Umgebung installieren:

  • mysqlclient :Dieses Paket enthält die MySQLdb Modul. Es ist in C geschrieben und eines der am häufigsten verwendeten Python-Pakete für MySQL.
  • mysql-connector-python :Dieses Paket enthält den mysql.connector Modul. Es ist komplett in Python geschrieben.
  • PyMySQL :Dieses Paket enthält die pymysql Modul. Es ist komplett in Python geschrieben.

Alle drei dieser Pakete verwenden Pythons portable SQL-Datenbank-API. Wenn Sie also von einem Modul zum anderen wechseln, können Sie fast Ihren gesamten vorhandenen Code wiederverwenden (das folgende Codebeispiel zeigt, wie das geht).

Einrichten der virtuellen Python-Umgebung und Installieren eines MySQL-Pakets

Gehen Sie folgendermaßen vor, um die virtuelle Python-Umgebung einzurichten und ein MySQL-Paket zu installieren:

  1. Melden Sie sich mit SSH bei Ihrem Konto an.
  2. Um eine virtuelle Umgebung zu erstellen, geben Sie die folgenden Befehle ein:
    cd ~
    virtualenv sqlenv
    
    • Das virtuelle Der Befehl erstellt eine virtuelle Umgebung namens sqlenv , und nachfolgende Befehle in diesem Verfahren gehen davon aus, dass die Umgebung sqlenv heißt . Sie können einen beliebigen Umgebungsnamen verwenden, aber stellen Sie sicher, dass Sie alle Vorkommen von sqlenv ersetzen mit Ihrem eigenen Umgebungsnamen.
    • Wenn Sie eine alternative Python-Version ausführen (z. B. wenn Sie wie in diesem Artikel beschrieben manuell eine neuere Python-Version für Ihr Konto konfiguriert haben), können Sie diese Version für die virtuelle Umgebung angeben. Um beispielsweise eine vom Benutzer konfigurierte Version von Python 3.8 in der virtuellen Umgebung zu installieren, könnten Sie den folgenden Befehl verwenden:
      virtualenv -p /home/username/bin/python3.8 sqlenv
      
  3. Geben Sie den folgenden Befehl ein, um die virtuelle Umgebung zu aktivieren:

    source sqlenv/bin/activate
    Die Eingabeaufforderung beginnt jetzt mit (sqlenv) um anzuzeigen, dass Sie in einer virtuellen Python-Umgebung arbeiten. Bei allen folgenden Befehlen in diesem Verfahren wird davon ausgegangen, dass Sie in der virtuellen Umgebung arbeiten. Wenn Sie sich von Ihrer SSH-Sitzung abmelden (oder die virtuelle Umgebung deaktivieren, indem Sie die deactivate Befehl), stellen Sie sicher, dass Sie die virtuelle Umgebung reaktivieren, bevor Sie die folgenden Schritte ausführen und den Beispielcode ausführen.
  4. Um pip zu aktualisieren Geben Sie in der virtuellen Umgebung den folgenden Befehl ein:

    pip install -U pip
  5. Geben Sie den Befehl für das Paket ein, das Sie installieren möchten:

    • Um den mysqlclient zu installieren geben Sie den folgenden Befehl ein:
      pip install mysqlclient
    • So installieren Sie den mysql-connector-python Paket, geben Sie den folgenden Befehl ein:

      pip install mysql-connector-python
    • Zur Installation von pymysql Paket, geben Sie den folgenden Befehl ein:

      pip install pymysql
Codebeispiel

Nachdem Sie ein MySQL-Paket in der virtuellen Umgebung installiert haben, können Sie mit tatsächlichen Datenbanken arbeiten. Der folgende Beispiel-Python-Code zeigt, wie das geht und wie einfach es ist, zwischen den verschiedenen SQL-Paketimplementierungen zu wechseln. Der Beispielcode funktioniert mit Python 2.7 und Python 3.x.

Ersetzen Sie in Ihrem eigenen Code username mit dem Benutzernamen der MySQL-Datenbank, Passwort mit dem Passwort des Datenbankbenutzers und dbname mit dem Datenbanknamen:

#!/usr/bin/python

from __future__ import print_function

hostname = 'localhost'
username = 'username'
password = 'password'
database = 'dbname'

# Simple routine to run a query on a database and print the results:
def doQuery( conn ) :
    cur = conn.cursor()

    cur.execute( "SELECT fname, lname FROM employee" )

    for firstname, lastname in cur.fetchall() :
        print( firstname, lastname )


print( "Using mysqlclient (MySQLdb):" )
import MySQLdb
myConnection = MySQLdb.connect( host=hostname, user=username, passwd=password, db=database )
doQuery( myConnection )
myConnection.close()

print( "Using mysql.connector:" )
import mysql.connector
myConnection = mysql.connector.connect( host=hostname, user=username, passwd=password, db=database )
doQuery( myConnection )
myConnection.close()

print( "Using pymysql:" )
import pymysql
myConnection = pymysql.connect( host=hostname, user=username, passwd=password, db=database )
doQuery( myConnection )
myConnection.close()

Dieses Beispiel erstellt eine Reihe von Connection Objekte, die dieselbe Datenbank mit verschiedenen MySQL-Modulen öffnen. Da alle drei MySQL-Module die API-Schnittstelle der portablen SQL-Datenbank verwenden, können sie den Code in doQuery() verwenden funktionieren ohne Änderungen.

Wenn Sie eine Verbindung haben Objekt, das einer Datenbank zugeordnet ist, können Sie einen Cursor erstellen Objekt. Der Cursor -Objekt können Sie execute() ausführen -Methode, die es Ihnen wiederum ermöglicht, unformatierte SQL-Anweisungen auszuführen (in diesem Fall eine SELECT Abfrage einer Tabelle namens employee ).

Wie Sie sehen können, macht es die portable SQL-Datenbank-API von Python sehr einfach, zwischen MySQL-Modulen in Ihrem Code zu wechseln. Im obigen Beispiel sind die einzigen Codeänderungen, die zur Verwendung eines anderen Moduls erforderlich sind, der Import und verbinden Aussagen.

Weitere Informationen

  • Weitere Informationen über die portable SQL-Datenbank-API von Python finden Sie unter https://www.python.org/dev/peps/pep-0249.
  • Weitere Informationen zum mysqlclient Paket finden Sie unter https://pypi.org/project/mysqlclient.
  • Weitere Informationen zu mysql-connector-python Paket finden Sie unter https://pypi.python.org/pypi/mysql-connector-python.
  • Weitere Informationen zu PyMySQL Paket finden Sie unter https://pypi.python.org/pypi/PyMySQL.