Python biedt verschillende manieren om verbinding te maken met een MySQL-database en om gegevens te verwerken. Dit artikel beschrijft drie methoden.
De MySQL-databases en -gebruikers moeten al bestaan voordat u een van de volgende methoden kunt gebruiken. Raadpleeg dit artikel voor informatie over het beheren van MySQL-databases met cPanel.Verbinding maken met MySQL met Python
Voordat u toegang krijgt tot MySQL-databases met Python, moet u een (of meer) van de volgende pakketten in een virtuele omgeving installeren:
- mysqlclient :Dit pakket bevat de MySQLdb module. Het is geschreven in C en is een van de meest gebruikte Python-pakketten voor MySQL.
- mysql-connector-python :Dit pakket bevat de mysql.connector module. Het is volledig in Python geschreven.
- PyMySQL :Dit pakket bevat de pymysql module. Het is volledig in Python geschreven.
Alle drie deze pakketten gebruiken de draagbare SQL-database-API van Python. Dit betekent dat als u van de ene module naar de andere overschakelt, u bijna al uw bestaande code kunt hergebruiken (het onderstaande codevoorbeeld laat zien hoe u dit doet).
De virtuele Python-omgeving instellen en een MySQL-pakket installeren
Volg deze stappen om de virtuele Python-omgeving in te stellen en een MySQL-pakket te installeren:
- Log in op uw account met SSH.
- Als u een virtuele omgeving wilt maken, typt u de volgende opdrachten:
cd ~ virtualenv sqlenv
- De virtualenv commando creëert een virtuele omgeving met de naam sqlenv , en de volgende opdrachten in deze procedure gaan ervan uit dat de omgeving de naam sqlenv heeft . U kunt elke gewenste omgevingsnaam gebruiken, maar zorg ervoor dat u alle exemplaren van sqlenv vervangt met uw eigen omgevingsnaam.
- Als je een alternatieve Python-versie gebruikt (je hebt bijvoorbeeld handmatig een nieuwere Python-versie geconfigureerd voor je account zoals beschreven in dit artikel), kun je die versie specificeren voor de virtuele omgeving. Als u bijvoorbeeld een door de gebruiker geconfigureerde versie van Python 3.8 in de virtuele omgeving wilt installeren, kunt u het volgende commando gebruiken:
virtualenv -p /home/username/bin/python3.8 sqlenv
-
Typ de volgende opdracht om de virtuele omgeving te activeren:
source sqlenv/bin/activate
De opdrachtprompt begint nu met (sqlenv) om aan te geven dat u in een virtuele Python-omgeving werkt. Bij alle volgende opdrachten in deze procedure wordt ervan uitgegaan dat u in de virtuele omgeving werkt. Als u uitlogt uit uw SSH-sessie (of de virtuele omgeving deactiveert met behulp van de deactivate commando), zorg ervoor dat u de virtuele omgeving opnieuw activeert voordat u de onderstaande stappen volgt en de voorbeeldcode uitvoert. -
pip bijwerken typ in de virtuele omgeving de volgende opdracht:
pip install -U pip
-
Typ de opdracht voor het pakket dat u wilt installeren:
- De mysqlclient installeren pakket, typt u het volgende commando:
pip install mysqlclient
-
De mysql-connector-python installeren pakket, typt u de volgende opdracht:
pip install mysql-connector-python
-
Om de pymysql . te installeren pakket, typt u de volgende opdracht:
pip install pymysql
- De mysqlclient installeren pakket, typt u het volgende commando:
Codevoorbeeld
Nadat je een MySQL-pakket in de virtuele omgeving hebt geïnstalleerd, ben je klaar om met daadwerkelijke databases te werken. De volgende Python-voorbeeldcode laat zien hoe u dit kunt doen, evenals hoe eenvoudig het is om te schakelen tussen de verschillende implementaties van SQL-pakketten. De voorbeeldcode werkt met Python 2.7 en Python 3.x.
Vervang in uw eigen code gebruikersnaam met de gebruikersnaam van de MySQL-database, wachtwoord met het wachtwoord van de databasegebruiker, en dbname met de databasenaam:
#!/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()
Dit voorbeeld maakt een reeks van Verbinding objecten die dezelfde database openen met verschillende MySQL-modules. Omdat alle drie de MySQL-modules de draagbare SQL-database-API-interface gebruiken, kunnen ze de code in de doQuery() gebruiken functioneren zonder enige aanpassingen.
Wanneer je een Verbinding hebt object dat aan een database is gekoppeld, kunt u een Cursor . maken voorwerp. De Cursor object stelt u in staat om de execute() . uit te voeren methode, die u op zijn beurt in staat stelt om onbewerkte SQL-instructies uit te voeren (in dit geval een SELECT query op een tabel met de naam werknemer ).
Zoals u kunt zien, maakt de draagbare SQL-database-API van Python het heel eenvoudig om te schakelen tussen MySQL-modules in uw code. In het bovenstaande voorbeeld zijn de enige codewijzigingen die nodig zijn om een andere module te gebruiken, de import en verbinden verklaringen.Meer informatie
- Ga voor meer informatie over de draagbare SQL-database-API van Python naar https://www.python.org/dev/peps/pep-0249.
- Voor meer informatie over de mysqlclient pakket, gaat u naar https://pypi.org/project/mysqlclient.
- Voor meer informatie over de mysql-connector-python pakket, gaat u naar https://pypi.python.org/pypi/mysql-connector-python.
- Voor meer informatie over de PyMySQL pakket, gaat u naar https://pypi.python.org/pypi/PyMySQL.