sql >> Databáze >  >> RDS >> Mysql

Připojení k MySQL pomocí Pythonu

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.


  1. Chyba SQL:ORA-01861:literál neodpovídá formátovacímu řetězci 01861

  2. Sledování vysoké dostupnosti pro PostgreSQL pomocí Heartbeat

  3. Kompletní systém registrace uživatelů pomocí PHP a databáze MySQL

  4. Mysql:Objednat podle like?