Python

CRUD operácie s databázami SQL a NoSQL pomocou Pythonu

CRUD operácie s databázami SQL a NoSQL pomocou Pythonu
S aplikáciou je možné použiť dva hlavné typy databáz: relačné databázy (SQL) a nerelačné databázy (NoSQL). Oba sú široko používané, ale výber jedného závisí od typu dát, ktoré sa uložia. Existujú štyri základné operácie, ktoré je možné vykonávať v databázach: vytváranie, čítanie, aktualizácia a mazanie (CRUD).

Môžeme interagovať s databázami pomocou ľubovoľného programovacieho jazyka alebo môžeme použiť softvérový program, ktorý nám umožňuje interagovať s databázou pomocou grafického používateľského rozhrania. V tomto článku sa budeme zaoberať databázami a ukážeme vám, ako s nimi komunikovať pomocou programovacieho jazyka Python.

Relačné databázy (SQL)

Relačné databázy (SQL) sa schémou líšia od nerelačných databáz (NoSQL). Schéma je šablóna, ktorá definuje štruktúru údajov, ktoré chcete ukladať. V relačných databázach vytvárame tabuľky na ukladanie údajov. Schéma tabuľky je definovaná pri vytvorení tabuľky. Napríklad, ak chceme ukladať údaje o študentoch v relačnej databáze, vytvoríme tabuľku študentov a definujeme schému tabuľky, ktorá môže obsahovať meno, registračné číslo, známku atď. každého študenta. Po vytvorení schémy uložíme údaje do riadkov tabuľky. Je dôležité si uvedomiť, že nemôžeme ukladať údaje, ktoré nie sú definované v schéme. V tomto príklade nemožno známku, ktorú študent dostal za skúšku, uložiť do tabuľky, pretože sme v schéme nedefinovali stĺpec pre tieto údaje.

Nasledujúci zoznam obsahuje niektoré populárne relačné databázy:

Nerelačné databázy (NoSQL)

Ako bolo uvedené vyššie, nerelačné databázy nemajú definovanú schému. Nerelačné databázy majú namiesto tabuliek kolekcie a tieto kolekcie obsahujú dokumenty, ktoré sú ekvivalentné s riadkami v relačnej databáze. Napríklad, ak chceme vytvoriť nerelačnú databázu na ukladanie údajov o študentoch, môžeme vytvoriť kolekciu používateľov a v tejto kolekcii uložíme dokument pre každého študenta. Tieto dokumenty nemajú definovanú schému a pre každého študenta môžete uložiť všetko, čo chcete.

Vykonávanie operácií CRUD v MySQL

Teraz vám ukážeme, ako interagovať s MySQL pomocou Pythonu.

Inštalácia ovládača MySQL pre Python

Pre interakciu s MySQL pomocou Pythonu je potrebné najskôr nainštalovať ovládač MySQL v Pythone.

[chránené e-mailom]: ~ $ sudo pip3 nainštalujte mysql-connector-python

alebo

[chránené e-mailom]: ~ $ sudo pip nainštalujte mysql-connector-python

Vytvorenie databázy

Pred vytvorením databázy sa musíme spojiť so serverom MySQL pomocou Pythonu. Mysql.konektorový modul ponúka metódu connect (), ktorá pomáha nadviazať spojenie s MySQL pomocou Pythonu.

>>> import mysql.konektor
// Nahraďte vlastnými IP a povereniami servera
>>> sql = mysql.konektor.pripojiť (
… Host = 'localhost',
… User = 'root',
… Heslo = '12345'
…)
>>> tlač (sql)

Táto správa ukazuje, že sme pomocou Pythonu úspešne vytvorili spojenie s databázou MySQL. Teraz spustíme dotaz SQL na serveri MySQL pomocou metódy execute () z mysql.konektorový modul.

>>> kurzor = sql.kurzor ()
>>> query = 'VYTVORIŤ DATABÁZU demo_db'
>>> kurzor.vykonať (dopyt)

Vyššie uvedený kód vytvorí v MySQL databázu s názvom demo_db.

Vytvorenie tabuľky

Teraz, keď sme vytvorili databázu, vytvoríme novú tabuľku s názvom študenti. Aby sme vytvorili tabuľku, musíme sa pripojiť k databáze.

>>> sql_db = mysql.konektor.pripojiť (
… Host = 'localhost',
… User = 'root',
… Heslo = '12345',
… Database = 'demo_db'
…)

Po pripojení k databáze použijeme metódu execute () na spustenie SQL dotazu na vytvorenie tabuľky so schémou.

>>> query = "VYTVORIŤ TABUĽKU študentov (meno VARCHAR (64), id INT, známka INT, dob DATE)";
>>> kurzor.vykonať (dopyt);

Vyššie uvedený príkaz vytvorí tabuľku s názvom študenti v databáze demo_db; do tabuľky môžeme vložiť iba meno, identifikačné číslo, známku a dátum narodenia, ako sú definované v schéme.

Vkladanie riadkov do tabuľky

Teraz, keď sme vytvorili tabuľku, vložíme do tejto tabuľky študenta. Vytvoríme dotaz a potom pomocou metódy execute () spustíme dotaz na serveri MySQL pomocou Pythonu.

>>> query = 'VLOŽTE DO ŽIADATEĽOV (meno, ID, známka, dob) HODNOTY („John“, 1, 3, „2020-7-04“)'
>>> kurzor.vykonať (dopyt)
>>> sql_db.spáchať ()

Tento dotaz pridá do tabuľky študenta s údajmi definovanými v dotaze. Rovnakým spôsobom môžeme do tabuľky pridať ďalších študentov.

POZNÁMKA: Zmeny sa v databáze uplatnia, iba ak spustíte sql_db.potvrdiť () po vykonaní zmien.

Výber riadkov z tabuľky

Príkaz SELECT v MySQL sa používa na vrátenie údajov z tabuľky. Na spustenie dotazu použijeme metódu execute () a potom pomocou metódy fetchall () získame zoznam všetkých študentov. Potom môžeme pomocou slučky for zobraziť všetkých študentov

>>> dopyt = 'VYBERTE * OD študentov'
>>> kurzor.vykonať (dopyt)
>>> výsledok = kurzor.fetchall ()
>>> pre x vo výsledku:
... tlačiť (x)
('John', 1, 3, datetime.dátum (2020, 7, 4))

Vidíme, že sa vrátia iba údaje za jedného študenta, pretože v tabuľke máme iba jedného študenta. Na určenie obmedzení môžeme použiť príkaz WHERE v MySQL s príkazom SELECT. Napríklad, ak chceme vrátiť študentov iba do 4. ročníka, môžeme použiť nasledujúci dotaz:

>>> dopyt = 'VYBERTE * OD študentov, KDE známka = 4'
>>> kurzor.vykonať (dopyt)
>>> výsledok = kurzor.fetchall ()
>>> pre x vo výsledku:
... tlačiť (x)

Vyššie uvedený kód načíta iba študentov zo 4. ročníka.

Aktualizácia riadku

V tejto časti si ukážeme, ako aktualizovať údaje študentov v tabuľke MySQL pomocou jazyka Python. Na aktualizáciu údajov konkrétnych študentov použijeme príkaz UPDATE s príkazmi WHERE a SET v MySQL. Príkaz WHERE sa používa na určenie, ktoré riadky sa budú aktualizovať, a príkaz SET sa používa na definovanie hodnôt použitých pri aktualizácii.

>>> query = 'UPDATE students SET name = "Mark" WHERE id = 4'
>>> kurzor.vykonať (dopyt)
>>> sql_db.spáchať ()

Teraz sa pokúsime načítať údaje študentov z tabuľky pomocou príkazu SELECT.

>>> dopyt = 'VYBERTE * OD študentov WHERE id = 4'
>>> kurzor.vykonať (dopyt)
>>> pre x v kurzore:
... tlačiť (x)
('Mark', 4, 4, datetime.dátum (2020, 7, 15))

Teraz vidíme, že meno študenta s id 4 bolo zmenené na Mark.

Odstraňuje sa riadok

Riadok z tabuľky môžeme vymazať použitím príkazu DELETE v MySQL pomocou Pythonu. Na vymazanie konkrétnych študentov z tabuľky použijeme príkaz DELETE s príkazom WHERE.

>>> query = 'ODSTRÁNIŤ OD študentov, KDE id = 2'
>>> kurzor.vykonať (dopyt)
>>> sql_db.spáchať ()

Teraz môžeme všetkých študentov vrátiť z tabuľky pomocou príkazu SELECT.

>>> dopyt = 'VYBERTE * OD študentov'
>>> kurzor.vykonať (dopyt)
>>> pre x v kurzore:
... tlačiť (x)
('John', 1, 3, datetime.dátum (2020, 7, 4))
('John', 3, 3, datetime.dátum (2020, 7, 8))
('Mark', 4, 4, datetime.dátum (2020, 7, 15))

Vidíme, že tabuľka neobsahuje študenta s id 2, pretože sme študenta z tabuľky odstránili.

Padanie stola

Mysql.konektorový modul možno použiť aj na položenie stola. Príkaz DROP v MySQL môžeme vykonať pomocou metódy execute ().

>>> kurzor = sql_db.kurzor ()
>>> query = 'DROP TABLE študenti'
>>> kurzor.vykonať (dopyt)

Vyššie uvedený kód vymaže tabuľku s názvom študenti, keď sa vykoná v Pythone.

Tým sa končí naša diskusia o databázach SQL. Ukázali sme vám, ako pomocou Pythonu aplikovať rôzne dotazy na databázu MySQL. Ďalej použijeme operácie CRUD na databázu NoSQL nazvanú MongoDB

Vykonávanie operácií CRUD v MongoDB

Aby sme mohli komunikovať s MongoDB pomocou Pythonu, musíme si najskôr nainštalovať pymongo, čo je ovládač MongoDB pre Python.

[chránené e-mailom]: ~ $ sudo pip install pymongo

alebo

[chránené e-mailom]: ~ $ sudo pip3 nainštalujte pymongo

Vytvorenie databázy

Môžeme sa pripojiť k MongoDB pomocou metódy MongoClient () modulu pymongo v MongoDB. Pred vykonaním akýchkoľvek akcií sa musíme pripojiť k databáze MongoDB.

>>> importovať pymongo
>>> klient = pymongo.MongoClient ('mongodb: // localhost: 27017 /')

Po pripojení k dátovému prípadu môžeme vykonať nasledujúci riadok a vytvoriť tak novú databázu s názvom demo_db.

>>> db = klient ['demo_db']

Ak databáza už existuje, potom je tento príkaz ignorovaný.

Vytvorenie zbierky

Teraz, keď sme vytvorili databázu, vytvoríme kolekciu s názvom študenti v pomenovanej databáze.

>>> importovať pymongo
>>> klient = pymongo.MongoClient ('mongodb: // localhost: 27017 /')
>>> db = klient ['demo_db']
>>> col = db ['students']

POZNÁMKA: MongoDB nevytvára kolekciu, kým do nej nezadáte údaje. Preto ak sa po spustení vyššie uvedeného kódu pokúsite získať prístup k kolekcii, zistíte, že v databáze nie je nič.

Podčiarknuté MySQL, nemusíme pri vytváraní novej kolekcie definovať schému, pretože MongoDB je nerelačná databáza.

Vkladanie dokumentu

Po vytvorení zbierky môžeme do zbierky vložiť dokument. Najskôr musíme definovať slovník a potom pomocou metódy insert_one () vložiť údaje definované v slovníku do zbierky.

POZNÁMKA: MongoDB automaticky vytvára pre každý dokument jedinečný znak „_id“; preto nemusíme uvádzať id.

>>> údaje =
… "Name": "John",
… „Známka“: 3,
… „Dob“: „2020-04-03“

>>> výsledok = sl.insert_one (data)

Do vyššie uvedeného dokumentu sme vložili meno, známku a nar. Teraz vložíme do zbierky študentov dokument, ktorý má pole pre vek.

>>> údaje =
… "Name": "Mark",
… „Známka“: 4,
… „Dob“: „2020-04-09“,
… „Vek“: 8

>>> výsledok = sl.insert_one (data)

Vidíme, že tento príkaz nevyvolá chybu. Pretože MongoDB je nerelačná databáza, môžeme do dokumentu pridať akékoľvek požadované informácie.

Získavanie dokumentov

V tejto časti použijeme na získanie údajov z databázy metódy find () a find_one (). Metóda find () vyžaduje dva argumenty: prvý slúži na filtrovanie dokumentov a druhý na definovanie polí dokumentu, ktorý chceme vrátiť. Napríklad, ak chceme získať ID „John“, môžeme spustiť nasledujúci dotaz:

>>> výsledok = sl.nájsť ("name": "John", "_id": 1)
>>> pre x vo výsledku:
... tlačiť (x)
'_id': ObjectId ('5f8f0514cb12c01f7420656e')

Prípadne môžeme získať všetky dokumenty zo zbierky pomocou nasledujúceho dotazu:

>>> výsledok = sl.Nájsť()
>>> pre x vo výsledku:
... tlačiť (x)
'_id': ObjectId ('5f8f0514cb12c01f7420656e'), 'name': 'John', 'grade': 3, 'dob': '2020-04-03'
'_id': ObjectId ('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'grade': 4, 'dob': '2020-04-09', 'age': 8

Aktualizácia dokumentov

Modul pymongo ponúka metódy update_one () a update_many () na aktualizáciu dokumentov v zbierke. Obe metódy majú dva argumenty: prvý definuje, ktorý dokument sa má zmeniť, a druhý definuje nové hodnoty. Teraz zmeníme známku študenta „Marka“.

>>> query = "name": "Mark"
>>> hodnota = "$ set": "grade": 5
>>> plk.update_one (dopyt, hodnota)
>>> pre x v kol.Nájsť():
... tlačiť (x)
'_id': ObjectId ('5f8f0514cb12c01f7420656e'), 'name': 'John', 'grade': 3, 'dob': '2020-04-03'
'_id': ObjectId ('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'grade': 5, 'dob': '2020-04-09', 'age': 8

Vymazanie dokumentu

Modul pymongo v Pythone má dve metódy, t.j.e., delete_one () a delete_many () na mazanie dokumentov. Obe metódy používajú argument, ktorým sa vyberie dokument na odstránenie. Pomocou nasledujúceho kódu odstránime študenta menom „John“.

>>> query = "name": "John"
>>> plk.delete_one (dopyt)
>>> pre x v kol.Nájsť():
... tlačiť (x)
'_id': ObjectId ('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'id': 2, 'grade': 5, 'dob': '2020-04-09', 'age': 8

Zrušenie zbierky

Môžeme odhodiť kolekciu v MongoDB pomocou metódy drop () modulu pymongo v Pythone. Najprv sa musíme pripojiť k databáze; potom vyberieme databázu, ktorá obsahuje kolekciu, ktorú chceme odstrániť. Po výbere kolekcie z databázy môžeme kolekciu odstrániť metódou drop (). Nasledujúci kód zruší študentov.

>>> importovať pymongo
>>> klient = pymongo.MongoClient ('mongodb: // localhost: 27017 /')
>>> db = klient ['demo_db']
>>> col = db ['students']
>>> plk.pokles()

Záver

Znalosť databáz je nevyhnutná, ak chcete vytvoriť webovú aplikáciu. Takmer každý programovací jazyk má rámce a knižnice pre vývoj backendového webu. Python je možné použiť pri vývoji back-endového webu, takže môžeme pracovať s databázami pomocou Pythonu pri práci s backendovými rámcami Pythonu. V tomto článku sme vám ukázali, ako interagovať s databázami MongoDB a MySQL pomocou jednoduchých operácií CRUD napísaných v Pythone.

Hry Ako vyvíjať hru v systéme Linux
Ako vyvíjať hru v systéme Linux
Pred desiatimi rokmi by len málo používateľov Linuxu predpovedalo, že ich obľúbený operačný systém bude jedného dňa populárnou hernou platformou pre k...
Hry Open source porty komerčných herných strojov
Open source porty komerčných herných strojov
Na hranie starých i niektorých z nedávnych herných titulov je možné využiť bezplatné hry s otvoreným zdrojom a multiplatformové herné enginy. V tomto ...
Hry Najlepšie hry z príkazového riadku pre systém Linux
Najlepšie hry z príkazového riadku pre systém Linux
Príkazový riadok nie je pri použití systému Linux iba vaším najväčším spojencom - môže byť tiež zdrojom zábavy, pretože ho môžete použiť na hranie mno...