sql >> Databasteknik >  >> RDS >> Mysql

Hur man ansluter till MySQL med Python

Python tillhandahåller flera sätt att ansluta till en MySQL-databas och bearbeta data. Den här artikeln beskriver tre metoder.

MySQL-databaserna och användarna måste redan finnas innan du kan använda någon av följande metoder. För information om hur man hanterar MySQL-databaser med cPanel, se den här artikeln.

Ansluter till MySQL med Python

Innan du kan komma åt MySQL-databaser med Python måste du installera ett (eller flera) av följande paket i en virtuell miljö:

  • mysqlclient :Det här paketet innehåller MySQLdb modul. Det är skrivet i C och är ett av de mest använda Python-paketen för MySQL.
  • mysql-connector-python :Det här paketet innehåller mysql.connector modul. Det är skrivet helt i Python.
  • PyMySQL :Det här paketet innehåller pymysql modul. Det är skrivet helt i Python.

Alla dessa tre paket använder Pythons portabla SQL-databas API. Det betyder att om du byter från en modul till en annan kan du återanvända nästan all din befintliga kod (kodexemplet nedan visar hur du gör detta).

Konfigurera den virtuella Python-miljön och installera ett MySQL-paket

För att ställa in den virtuella Python-miljön och installera ett MySQL-paket, följ dessa steg:

  1. Logga in på ditt konto med SSH.
  2. För att skapa en virtuell miljö, skriv följande kommandon:
    cd ~
    virtualenv sqlenv
    
    • Den virtualenv kommandot skapar en virtuell miljö med namnet sqlenv , och efterföljande kommandon i denna procedur förutsätter att miljön heter sqlenv . Du kan använda vilket miljönamn du vill, men se till att du ersätter alla förekomster av sqlenv med ditt eget miljönamn.
    • Om du kör en alternativ Python-version (till exempel konfigurerade du manuellt en nyare Python-version för ditt konto enligt beskrivningen i den här artikeln), kan du ange den versionen för den virtuella miljön. För att till exempel installera en användarkonfigurerad version av Python 3.8 i den virtuella miljön kan du använda följande kommando:
      virtualenv -p /home/username/bin/python3.8 sqlenv
      
  3. För att aktivera den virtuella miljön, skriv följande kommando:

    source sqlenv/bin/activate
    Kommandotolken börjar nu med (sqlenv) för att indikera att du arbetar i en virtuell Python-miljö. Alla följande kommandon i den här proceduren förutsätter att du arbetar i den virtuella miljön. Om du loggar ut från din SSH-session (eller inaktiverar den virtuella miljön genom att använda avaktivera kommandot), se till att du återaktiverar den virtuella miljön innan du följer stegen nedan och kör exempelkoden.
  4. För att uppdatera pip i den virtuella miljön, skriv följande kommando:

    pip install -U pip
  5. Skriv kommandot för paketet du vill installera:

    • För att installera mysqlclient paket, skriv följande kommando:
      pip install mysqlclient
    • För att installera mysql-connector-python paket, skriv följande kommando:

      pip install mysql-connector-python
    • För att installera pymysql paket, skriv följande kommando:

      pip install pymysql
Kodexempel

När du har installerat ett MySQL-paket i den virtuella miljön är du redo att arbeta med faktiska databaser. Följande exempel på Python-kod visar hur man gör detta, samt hur enkelt det är att växla mellan de olika SQL-paketimplementeringarna. Exempelkoden fungerar med Python 2.7 och Python 3.x.

Ersätt användarnamn i din egen kod med MySQL-databasens användarnamn, lösenord med databasanvändarens lösenord och dbname med databasnamnet:

#!/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()

Det här exemplet skapar en serie Anslutning objekt som öppnar samma databas med olika MySQL-moduler. Eftersom alla tre MySQL-modulerna använder det portabla SQL-databasens API-gränssnitt kan de använda koden i doQuery() fungerar utan några ändringar.

När du har en anslutning objekt som är kopplat till en databas kan du skapa en markör objekt. Markören objekt gör att du kan köra execute() metod, som i sin tur gör att du kan köra obearbetade SQL-satser (i det här fallet en SELECT fråga på en tabell som heter anställd ).

Som du kan se gör Pythons portabla SQL-databas API det mycket enkelt att växla mellan MySQL-moduler i din kod. I exemplet ovan är de enda kodändringarna som krävs för att använda en annan modul till importen och anslut uttalanden.

Mer information

  • För mer information om Pythons portabla SQL-databas API, besök https://www.python.org/dev/peps/pep-0249.
  • För mer information om mysqlclient paket, besök https://pypi.org/project/mysqlclient.
  • För mer information om mysql-connector-python paket, besök https://pypi.python.org/pypi/mysql-connector-python.
  • För mer information om PyMySQL paket, besök https://pypi.python.org/pypi/PyMySQL.

  1. Lär dig hur man skapar formulär i minnet (Ja, du hörde rätt)

  2. Hur väljer man från två tabeller i MySQL även om inte alla rader i en tabell har korrespondenter i den andra?

  3. Hur återställer man löpande SUM efter att den når ett tröskelvärde?

  4. Hur man delar upp frågefönster i SQL Server Management Studio (SSMS) - SQL Server / TSQL självstudie del 13