sql >> Database teknologi >  >> RDS >> Mysql

Tilslutning til MySQL ved hjælp af Python

I denne artikel vil vi diskutere, hvordan du opretter forbindelse til MySQL ved hjælp af Python. Python er et af de mest produktive og mest udbredte programmeringssprog i brug i dag. Dens enkle og elegante syntaks gør den ideel til nye programmører, mens erfarne programmører nyder godt af den omfattende liste over tilgængelige moduler og funktionaliteter.

MySQL er et robust open source SQL-baseret, relationelt databasestyringssystem, der bruges i mange softwareprogrammer og webservere. Denne artikel har til formål at vise, hvordan du forbinder for at bruge Python til at oprette forbindelse til MySQL og udføre nogle grundlæggende opgaver.

Hvorfor bruge Python til at oprette forbindelse til MySQL?

Du spørger måske dig selv, hvorfor er denne information vigtig? Det bedste svar er, at disse to komponenter supplerer hinanden glimrende! Pythons' evne til at manipulere data ved hjælp af kildeoplysninger er uovertruffen. MySQL eller MariaDB indeholder de data, der kan manipuleres af Python. Brug af disse to faktorer til at forbedre og komplementere hinanden øger kun den samlede synergi mellem dem.

Trin 1. Installation af stikmodulet

Lad os starte med at installere stikmodulet. Det første trin i at forbinde MySQL med Python er at installere Pip Python-modulet. Hvis du ikke allerede har pip installeret, kan detaljerede instruktioner til installation af pip under flere operativsystemer findes i Liquid Web Knowledge Base. Når vi har pip installeret, skal vi installere mysql-connector-python driver ved hjælp af følgende 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 eksemplet ovenfor tjekker pip for andre moduler, som mysql-connector-python-driveren kan kræve, som derefter vil blive installeret, hvis det er nødvendigt.

Trin 2. Importer forbindelse

Det næste trin er at importere mysql-connector-python modul ved hjælp af denne kommando i din kode.

import mysql.connector

Denne kommando fortæller Python at indlæse og aktivere alle funktioner og objekter relateret til og brugt af MySQL-konnektormodulet.

Trin 3. Tilslut MySQL til serveren

Vores næste trin er at kalde mysql.connector.connect() metode til at oprette forbindelse til serveren.

import mysql.connector

db = mysql.connector.connect(
	host='localhost',
	user=’username’,
	password=’password’
)

Normalt, når vi kommunikerer med en MySQL-database, bruger vi en MySQLcursor objekt (som er en del af mysql-connector-python-modulet). Tænk på dette objekt som en type CLI (kommandolinjegrænseflade), hvor vi kan indtaste SQL-forespørgsler, der bruges til at interagere med serveren. Denne kommunikation udføres ved hjælp af markørmetoden (cursor =db.cursor() ), der kalder på db-objektet, som vi oprettede i det sidste trin med forbindelsesmetoden:

import mysql.connector

db = mysql.connector.connect(
        host='localhost',
        user=’username’,
        password=’password’'
)

cursor = db.cursor()

Et db.cursor-objekt giver os mulighed for at udføre SQL-forespørgsler. Denne forespørgsel returnerer et objekt, som vi kan iterere over med en for-løkke sådan.

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)

Der er en allerede eksisterende database, som blev oprettet i en tidligere KB-tutorial om SQL Views. Den indeholder information om en fiktiv serie af biler. Ved at bruge ovenstående script vil resultaterne se sådan ud:

# python mysql-test.py 
(u'information_schema',)
(u'races',)
(u'sys',)

Vi kan bruge andre kommandoer med den aktuelle markør (db.cursor() ) for at interagere med denne database. Her trækker vi en liste over tabellerne og visningerne fra den samme database.

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',)
Bemærk:"u" foran resultatet angiver, at det er en Unicode-streng.

Indsættelse af data med MySQL-markørobjektet

Nu hvor vi kan hente strukturen af ​​databasen, kan vi bruge markørobjektet til at udføre andre kommandoer. Der var en sektion, hvor kørerne for løbssæsonen blev indsat i databasen. Det blev gjort ved at bruge denne SQL-forespørgsel.

insert into drivers (name,car_number) values
  ('Buddy Baker',28),
  ('Dale Earnhardt Jr.',8),
  ('Ricky Rudd',88);

For at køre den samme SQL-forespørgsel ved hjælp af Python, giver vi simpelthen denne streng til udførelsesmetoden for vores markør . En god metode til at øve sig i at bruge dette er at tildele en variabel som teksten i forespørgslen og derefter kalde execute på markørobjektet. Du skal også instruere mysql til at foretage ændringerne ved at kalde db.commit() sådan.

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()

Resultaterne:

id navn

bilnummer

1 Buddy Baker

28

2

Dale Earnhardt Jr.

8
3

Ricky Rudd

88

Når vi indsætter flere rækker, tilbyder grænsefladen metoden "executemany" , som giver os mulighed for at oprette en matrix af værdier, der skal indsættes, og en streng, der er specielt formateret med %s-symbolet, der erstatter værdierne fra matrixerne. Dette eksempel er identisk med det forrige indsæt:

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ærdierne fra arrayet 'drivere' sendes en efter en ind i 'sql'-sætningen og overføres derefter til 'executemany()

Med Select

Ligesom andre SQL-sætninger kan vi bruge markørobjektet til at udføre markeringer. Efter et valg får en markør et par nye metoder, inklusive fetchall() og fetchone() . Fetchall() returnerer en liste over alle resultaterne. Hvert resultat er en liste med de tilsvarende kolonner i den rækkefølge, de blev valgt i. Metoden fetchone() returnerer det næste resultat fra resultatsættet.

sql = "select name,car_number from drivers"

cursor.execute(sql)

results = cursor.fetchall()

for x in results:
        print(x)

Resultater:

(u'Buddy Baker', 28)
(u'Dale Earnhardt Jr.', 8)
(u'Ricky Rudd', 88)

Hvis vi ønsker et resultat ad gangen, kan vi bruge fetchone()

sql = "select name,car_number from drivers"

cursor.execute(sql)

results = cursor.fetchone()

print(results)

Resultater:

(u'Buddy Baker', 28)

Opdatering og sletning af data

Ligesom insert-kommandoen bruger delete- og update-kommandoerne et markørobjekt og skal kalde db.commit(); ellers ligner de andre SQL-kommandoer.

Opdater :

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)

Slet :

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)

Konklusion

Så hvad er takeaways af denne artikel? Brug af Python til at interagere med MySQL er en enkel og effektiv måde at manipulere data på måder, der komplementerer hvert system.

Har du spørgsmål? Vi er stolte af at være de mest hjælpsomme mennesker inden for Hosting™! Vores tekniske supportmedarbejdere er altid til rådighed for at hjælpe med eventuelle problemer relateret til denne artikel, 24 timer i døgnet, 7 dage om ugen 365 dage om året.

Vi er tilgængelige via vores billetsystemer på [email protected], på telefon (på 800-580-4986), eller via en LiveChat eller en hvilken som helst metode, du foretrækker. Vi arbejder hårdt for dig, så du kan slappe af.


  1. Fordi du skal kende PowerShell

  2. Sådan omdøbes et tabelnavn i SQL Server

  3. For at ignorere dublerede nøgler under 'copy from' i postgresql

  4. SQLiteDatabase fejl sqlite:(1) nær ):syntaksfejl