I den här artikeln kommer vi att diskutera hur man ansluter till MySQL med Python. Python är ett av de mest produktiva och mest använda programmeringsspråken som används idag. Dess enkla och eleganta syntax gör den idealisk för nya programmerare, medan erfarna programmerare kan njuta av den omfattande listan över tillgängliga moduler och funktioner.
MySQL är ett robust SQL-baserat, relationsdatabashanteringssystem med öppen källkod som används i många program och webbservrar. Den här artikeln syftar till att visa hur man ansluter för att använda Python för att ansluta till MySQL och utföra några grundläggande uppgifter.
Varför använda Python för att ansluta till MySQL?
Du kanske frågar dig själv, varför är denna information viktig? Det bästa svaret är att dessa två komponenter kompletterar varandra briljant! Pythons förmåga att manipulera data med hjälp av källinformation är oöverträffad. MySQL eller MariaDB innehåller data som kan manipuleras av Python. Att använda dessa två faktorer för att förbättra och komplettera varandra ökar bara den övergripande synergin mellan dem.
Steg 1. Installera anslutningsmodulen
Låt oss börja med att installera kontaktmodulen. Det första steget i att ansluta MySQL till Python är att installera Pip Python-modulen. Om du inte redan har pip installerat, finns detaljerade instruktioner för att installera pip under flera operativsystem i Liquid Web Knowledge Base. När vi har pip installerat måste vi installera mysql-connector-python drivrutinen med följande kommando.
root@host:~# pip install mysql-connector-python
Collecting mysql-connector-python
Downloading mysql_connector_python-8.0.21-cp27-cp27mu-manylinux1_x86_64.whl (16.0 MB)
|################################| 16.0 MB 13.7 MB/s
Collecting protobuf>=3.0.0
Downloading protobuf-3.12.2-cp27-cp27mu-manylinux1_x86_64.whl (1.3 MB)
|################################| 1.3 MB 17.0 MB/s
Requirement already satisfied: setuptools in /usr/local/lib/python2.7/dist-packages (from protobuf>=3.0.0->mysql-connector-python) (44.1.1)
Collecting six>=1.9
Downloading six-1.15.0-py2.py3-none-any.whl (10 kB)
Installing collected packages: six, protobuf, mysql-connector-python
Successfully installed mysql-connector-python-8.0.21 protobuf-3.12.2 six-1.15.0
I exemplet ovan söker pip efter andra moduler som mysql-connector-python-drivrutinen kan kräva, som sedan kommer att installeras vid behov.
Steg 2. Importanslutning
Nästa steg är att importera mysql-connector-python modul med detta kommando i din kod.
import mysql.connector
Detta kommando berättar för Python att ladda och aktivera alla funktioner och objekt som är relaterade till och används av MySQL-anslutningsmodulen.
Steg 3. Anslut MySQL till servern
Vårt nästa steg är att anropa mysql.connector.connect() metod för att skapa en anslutning till servern.
import mysql.connector
db = mysql.connector.connect(
host='localhost',
user=’username’,
password=’password’
)
När vi kommunicerar med en MySQL-databas använder vi vanligtvis en MySQLcursor objekt (som är en del av mysql-connector-python-modulen). Tänk på det här objektet som en typ av CLI (command-line interface) där vi kan skriva in SQL-frågor som används för att interagera med servern. Denna kommunikation åstadkoms med hjälp av markörmetoden (cursor =db.cursor() ), anropar db-objektet som vi skapade i det sista steget med connect-metoden:
import mysql.connector
db = mysql.connector.connect(
host='localhost',
user=’username’,
password=’password’'
)
cursor = db.cursor()
Ett db.cursor-objekt tillåter oss att köra SQL-frågor. Den här frågan returnerar ett objekt som vi kan iterera över med en for-loop som så.
import mysql.connector
db = mysql.connector.connect(
host='localhost',
user=’username’,
password=’password’'
)
cursor = db.cursor()
cursor.execute("show databases")
for x in cursor:
print(x)
Det finns en redan existerande databas som skapades i en tidigare KB-handledning om SQL Views. Den innehåller information om en fiktiv bilserie. Med skriptet ovan skulle resultaten se ut så här:
# python mysql-test.py
(u'information_schema',)
(u'races',)
(u'sys',)
Vi kan använda andra kommandon med den aktuella markören (db.cursor() ) för att interagera med denna databas. Här tar vi en lista över tabellerna och vyerna från samma databas.
import mysql.connector
db = mysql.connector.connect(
host='localhost',
user=’username’,
password='password'
)
cursor = db.cursor()
cursor.execute("use races")
cursor.execute("show tables")
for x in cursor:
print(x)
The output results look like this.
# python mysql-test.py
(u'all_finishes',)
(u'drivers',)
(u'finishes',)
(u'race_winners',)
(u'races',)
(u'standings_leader',)
(u'tracks',)
Obs:"u" framför resultatet indikerar att det är en Unicode-sträng. Infoga data med MySQL-markörobjektet
Nu när vi kan hämta strukturen i databasen kan vi använda markörobjektet för att utföra andra kommandon. Det fanns ett avsnitt där förarna för tävlingssäsongen infogades i databasen. Det gjordes med hjälp av denna SQL-fråga.
insert into drivers (name,car_number) values
('Buddy Baker',28),
('Dale Earnhardt Jr.',8),
('Ricky Rudd',88);
För att köra samma SQL-fråga med Python, passar vi helt enkelt den här strängen till exekveringsmetoden för vår markör . En bra metod att öva på att använda detta är att tilldela en variabel som texten i frågan och sedan anropa execute på markörobjektet. Du måste också instruera mysql att utföra ändringarna genom att anropa db.commit() så.
db = mysql.connector.connect(
host='localhost',
user=’username’,
password='password'
)
cursor = db.cursor()
cursor.execute("use races")
query = "insert into drivers (name,car_number) values ('Buddy Baker',28),('Dale Earnhardt Jr.',8),('Ricky Rudd',88);"
cursor.execute(query)
db.commit()
Resultaten:
id | namn | bilnummer |
1 | Buddy Baker | 28 |
2 | Dale Earnhardt Jr. | 8 |
3 | Ricky Rudd | 88 |
När vi infogar flera rader erbjuder gränssnittet metoden "executemany" , vilket gör att vi kan skapa en array av värden som ska infogas och en sträng speciellt formaterad med %s-symbolen som ersätter värdena från arrayerna. Detta exempel är identiskt med föregående infogning:
db = mysql.connector.connect(
host='localhost',
user=’username’,
password='password'
)
cursor = db.cursor()
cursor.execute("use races")
query = "insert into drivers (name,car_number) values ('Buddy Baker',28),('Dale Earnhardt Jr.',8),('Ricky Rudd',88);"
cursor.execute(query)
db.commit()
Värdena från arrayen 'drivrutiner' skickas en efter en till 'sql'-satsen och skickas sedan till 'executemany() ’
Med Select
Liksom andra SQL-satser kan vi använda markörobjektet för att utföra urval. Efter ett urval får en markör några nya metoder, inklusive fetchall() och fetchone() . Fetchall() returnerar en lista med alla resultat. Varje resultat är en lista med motsvarande kolumner i den ordning de valdes i. Metoden fetchone() returnerar nästa resultat från resultatuppsättningen.
sql = "select name,car_number from drivers"
cursor.execute(sql)
results = cursor.fetchall()
for x in results:
print(x)
Resultat:
(u'Buddy Baker', 28)
(u'Dale Earnhardt Jr.', 8)
(u'Ricky Rudd', 88)
Om vi vill ha ett resultat i taget kan vi använda fetchone()
sql = "select name,car_number from drivers"
cursor.execute(sql)
results = cursor.fetchone()
print(results)
Resultat:
(u'Buddy Baker', 28)
Uppdatera och radera data
Ungefär som kommandot insert använder kommandona delete och update ett markörobjekt och måste anropa db.commit(); annars liknar de andra SQL-kommandon.
Uppdatera :
sql = "update drivers set car_number = 1 where car_number = 88"
cursor.execute(sql)
db.commit()
sql = "select name,car_number from drivers"
cursor.execute(sql)
results = cursor.fetchall()
for x in results:
print(x)
(u'Buddy Baker', 28)
(u'Dale Earnhardt Jr.', 8)
(u'Ricky Rudd', 1)
Ta bort :
sql = "delete from drivers where car_number = 8"
cursor.execute(sql)
db.commit()
sql = "select name,car_number from drivers"
cursor.execute(sql)
results = cursor.fetchall()
for x in results:
print(x)
(u'Buddy Baker', 28)
(u'Ricky Rudd', 1)
Slutsats
Så, vad är fördelarna med den här artikeln? Att använda Python för att interagera med MySQL är ett enkelt och effektivt sätt att manipulera data på sätt som kompletterar varje system.
Har frågor? Vi är stolta över att vara de mest hjälpsamma människorna inom Hosting™! Vår tekniska supportpersonal är alltid tillgänglig för att hjälpa till med alla problem som rör denna artikel, 24 timmar om dygnet, 7 dagar i veckan 365 dagar om året.
Vi är tillgängliga via våra biljettsystem på [email protected], via telefon (på 800-580-4986), eller via en LiveChat eller vilken metod du föredrar. Vi jobbar hårt för dig så att du kan koppla av.