V tomto článku budeme diskutovat o tom, jak se připojit k MySQL pomocí Pythonu. Python je dnes jedním z nejproduktivnějších a nejrozšířenějších programovacích jazyků. Díky jednoduché a elegantní syntaxi je ideální pro nové programátory, zatímco zkušení programátoři si užijí rozsáhlého seznamu dostupných modulů a funkcí.
MySQL je robustní open source systém pro správu relačních databází založený na SQL, který se používá v mnoha softwarových programech a webových serverech. Tento článek si klade za cíl ukázat, jak se připojit pomocí Pythonu pro připojení k MySQL a provádět některé základní úkoly.
Proč používat Python k připojení k MySQL?
Možná si říkáte, proč jsou tyto informace důležité? Nejlepší odpovědí je, že tyto dvě složky se skvěle doplňují! Schopnost Pythonu manipulovat s daty pomocí zdrojových informací je bezkonkurenční. MySQL nebo MariaDB obsahuje data, se kterými může Python manipulovat. Použití těchto dvou faktorů ke vzájemnému posílení a doplnění pouze zvyšuje celkovou synergii mezi nimi.
Krok 1. Instalace modulu konektoru
Začněme instalací konektorového modulu. Prvním krokem při propojení MySQL s Pythonem je instalace modulu Pip Python. Pokud ještě nemáte nainstalovaný pip, podrobné pokyny pro instalaci pipu pod více operačními systémy naleznete v databázi znalostí Liquid Web. Jakmile máme pip nainstalovaný, musíme nainstalovat mysql-connector-python ovladače pomocí následujícího příkazu.
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
Ve výše uvedeném příkladu pip zkontroluje další moduly, které může vyžadovat ovladač mysql-connector-python, které se pak v případě potřeby nainstalují.
Krok 2. Import konektoru
Dalším krokem je import mysql-connector-python pomocí tohoto příkazu ve vašem kódu.
import mysql.connector
Tento příkaz říká Pythonu, aby načetl a povolil všechny funkce a objekty související a používané modulem MySQL konektoru.
Krok 3. Připojte MySQL k serveru
Naším dalším krokem je zavolat mysql.connector.connect() způsob vytvoření připojení k serveru.
import mysql.connector
db = mysql.connector.connect(
host='localhost',
user=’username’,
password=’password’
)
Obvykle při komunikaci s databází MySQL používáme kurzor MySQL objekt (který je součástí modulu mysql-connector-python). Představte si tento objekt jako typ CLI (rozhraní příkazového řádku), kde můžeme zadávat dotazy SQL používané k interakci se serverem. Tato komunikace se provádí pomocí kurzorové metody (cursor =db.cursor() ), voláním objektu db, který jsme vytvořili v posledním kroku metodou connect:
import mysql.connector
db = mysql.connector.connect(
host='localhost',
user=’username’,
password=’password’'
)
cursor = db.cursor()
Objekt db.cursor nám umožňuje provádět SQL dotazy. Tento dotaz vrací objekt, který můžeme iterovat pomocí cyklu for takhle.
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)
Existuje již existující databáze, která byla nastavena v předchozím kurzu znalostní báze o SQL Views. Obsahuje informace o fiktivní sériové sérii vozů. Pomocí výše uvedeného skriptu by výsledky vypadaly takto:
# python mysql-test.py
(u'information_schema',)
(u'races',)
(u'sys',)
S aktuálním kurzorem můžeme použít další příkazy (db.cursor() ) pro interakci s touto databází. Zde vytáhneme seznam tabulek a pohledů ze stejné databáze.
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',)
Poznámka:„u“ před výsledkem znamená, že se jedná o řetězec Unicode. Vkládání dat pomocí objektu kurzoru MySQL
Nyní, když můžeme načíst strukturu databáze, můžeme použít objekt kurzoru k provádění dalších příkazů. Byla zde sekce, kde se do databáze vkládali jezdci pro závodní sezónu. Bylo to provedeno pomocí tohoto SQL dotazu.
insert into drivers (name,car_number) values
('Buddy Baker',28),
('Dale Earnhardt Jr.',8),
('Ricky Rudd',88);
Chcete-li spustit stejný dotaz SQL pomocí Pythonu, jednoduše předáme tento řetězec metodě spuštění našeho kurzoru . Dobrou metodou, jak to procvičit, je přiřadit proměnnou jako text dotazu a poté zavolat spuštění na objektu kurzoru. Musíte také instruovat mysql, aby provedl změny, a to voláním db.commit() podobně.
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ýsledky:
id | název | číslo vozu |
1 | Buddy Baker | 28 |
2 | Dale Earnhardt Jr. | 8 |
3 | Ricky Rudd | 88 |
Když vkládáme více řádků, rozhraní nabízí metodu „executemany“ , což nám umožňuje vytvořit pole hodnot, které se mají vložit, a řetězec speciálně naformátovaný se symbolem %s nahrazujícím hodnoty z polí. Tento příklad je identický s předchozí vložkou:
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()
Hodnoty z pole ‚ovladače‘ jsou předány jedna po druhé do příkazu ‚sql‘ a poté předány do ‚executemany() '
Pomocí Vybrat
Stejně jako ostatní příkazy SQL můžeme k provádění výběrů použít objekt kurzoru. Po výběru získá kurzor několik nových metod, včetně fetchall() a fetchone() . Funkce fetchall() vrátí seznam všech výsledků. Každý výsledek je seznam s odpovídajícími sloupci v pořadí, ve kterém byly vybrány. Metoda fetchone() vrací další výsledek ze sady výsledků.
sql = "select name,car_number from drivers"
cursor.execute(sql)
results = cursor.fetchall()
for x in results:
print(x)
Výsledky:
(u'Buddy Baker', 28)
(u'Dale Earnhardt Jr.', 8)
(u'Ricky Rudd', 88)
Pokud chceme jeden výsledek po druhém, můžeme použít fetchone()
sql = "select name,car_number from drivers"
cursor.execute(sql)
results = cursor.fetchone()
print(results)
Výsledky:
(u'Buddy Baker', 28)
Aktualizace a mazání dat
Podobně jako příkaz insert i příkazy delete a update používají kurzorový objekt a musí volat db.commit(); jinak jsou podobné ostatním příkazům SQL.
Aktualizovat :
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)
Smazat :
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)
Závěr
Jaké jsou tedy závěry tohoto článku? Použití Pythonu k interakci s MySQL je jednoduchý a efektivní způsob, jak manipulovat s daty způsoby, které doplňují každý systém.
Máte otázky? Jsme hrdí na to, že jsme nejužitečnějšími lidmi v hostingu™! Naši pracovníci technické podpory jsou vždy k dispozici, aby vám pomohli s jakýmikoli problémy souvisejícími s tímto článkem, 24 hodin denně, 7 dní v týdnu, 365 dní v roce.
Jsme k dispozici prostřednictvím našich systémů prodeje vstupenek na adrese [email protected], telefonicky (na čísle 800-580-4986) nebo prostřednictvím LiveChatu nebo jakýmkoli způsobem, který preferujete. Tvrdě pro vás pracujeme, abyste si mohli odpočinout.