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:
- Logga in på ditt konto med SSH.
- 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
-
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. -
För att uppdatera pip i den virtuella miljön, skriv följande kommando:
pip install -U pip
-
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
- För att installera mysqlclient paket, skriv följande kommando:
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.