sql >> Database >  >> RDS >> Mysql

Verbinding maken met MySQL met behulp van Python

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:

  1. Log in op uw account met SSH.
  2. 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
      
  3. 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.
  4. pip bijwerken typ in de virtuele omgeving de volgende opdracht:

    pip install -U pip
  5. 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
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.

  1. PostgreSQL:NIET IN versus BEHALVE prestatieverschil (bewerkt #2)

  2. Postgres-verbinding is gesloten fout in Spring Boot

  3. Methoden voor prestatietests:een nieuwe manier ontdekken

  4. MySQL InnoDB Storage Engine-ondersteuning inschakelen in XAMPP-installatie