Krajta

CRUD operace s databázemi SQL a NoSQL pomocí Pythonu

CRUD operace s databázemi SQL a NoSQL pomocí Pythonu
Existují dva hlavní typy databází, které lze s aplikací použít: relační databáze (SQL) a nerelační databáze (NoSQL). Oba jsou široce používány, ale výběr jednoho závisí na typu dat, která budou uložena. V databázích lze provádět čtyři základní operace: vytváření, čtení, aktualizace a mazání (CRUD).

Můžeme komunikovat s databázemi pomocí libovolného programovacího jazyka, nebo můžeme použít softwarový program, který nám umožňuje komunikovat s databází pomocí grafického uživatelského rozhraní. V tomto článku probereme databáze a ukážeme vám, jak s nimi komunikovat pomocí programovacího jazyka Python.

Relační databáze (SQL)

Relační databáze (SQL) se z hlediska schématu liší od nerelačních databází (NoSQL). Schéma je šablona, ​​která definuje strukturu dat, která budete ukládat. V relačních databázích vytváříme tabulky pro ukládání dat. Schéma tabulky je definováno při vytvoření tabulky. Například pokud chceme ukládat data o studentech do relační databáze, vytvoříme tabulku studentů a definujeme schéma tabulky, které může obsahovat jméno, registrační číslo, známku atd. každého studenta. Po vytvoření schématu uložíme data do řádků tabulky. Je důležité si uvědomit, že nemůžeme ukládat data, která nejsou definována ve schématu. V tomto příkladu nelze hodnocení, které student na zkoušku obdržel, uložit do tabulky, protože jsme ve schématu nedefinovali sloupec pro tato data.

Následující seznam obsahuje některé populární relační databáze:

Nerelační databáze (NoSQL)

Jak je uvedeno výše, nerelační databáze nemají definované schéma. Nerelační databáze mají kolekce namísto tabulek a tyto kolekce obsahují dokumenty, které jsou ekvivalentní řádkům v relační databázi. Například pokud chceme vytvořit nerelační databázi pro ukládání dat studentů, můžeme vytvořit kolekci uživatelů a v této kolekci uložíme dokument pro každého studenta. Tyto dokumenty nemají definované schéma a pro každého studenta můžete uložit vše, co chcete.

Provádění operací CRUD v MySQL

Nyní vám ukážeme, jak komunikovat s MySQL pomocí Pythonu.

Instalace ovladače MySQL pro Python

Pro interakci s MySQL pomocí Pythonu je nejprve nutné nainstalovat ovladač MySQL v Pythonu.

[chráněno e-mailem]: ~ $ sudo pip3 install mysql-connector-python

nebo

[chráněno e-mailem]: ~ $ sudo pip install mysql-connector-python

Vytvoření databáze

Před vytvořením databáze se musíme spojit se serverem MySQL pomocí Pythonu. MySQL.connector module offers the connect () method to help to establish a connection with MySQL using Python.

>>> import mysql.konektor
// Nahraďte vlastními IP a pověřeními serveru
>>> sql = mysql.konektor.připojit(
… Host = 'localhost',
… User = 'root',
… Heslo = '12345'
…)
>>> tisk (sql)

Tato zpráva ukazuje, že jsme úspěšně vytvořili připojení k databázi MySQL pomocí Pythonu. Nyní spustíme dotaz SQL na serveru MySQL pomocí metody execute () z mysql.konektorový modul.

>>> kurzor = sql.kurzor()
>>> query = 'VYTVOŘIT DATABÁZE demo_db'
>>> kurzor.provést (dotaz)

Výše uvedený kód vytvoří databázi s názvem demo_db v MySQL.

Vytvoření tabulky

Nyní, když jsme vytvořili databázi, vytvoříme novou tabulku s názvem studenti. Chcete-li vytvořit tabulku, musíme se připojit k databázi.

>>> sql_db = mysql.konektor.připojit(
… Host = 'localhost',
… User = 'root',
… Heslo = '12345',
… Database = 'demo_db'
…)

Po připojení k databázi použijeme metodu execute () ke spuštění dotazu SQL k vytvoření tabulky se schématem.

>>> query = "VYTVOŘIT TABULKU studenti (jméno VARCHAR (64), id INT, známka INT, dob DATE)";
>>> kurzor.provést (dotaz);

Výše uvedený příkaz vytvoří tabulku s názvem studenti v databázi demo_db; můžeme do tabulky vložit pouze jméno, id, známku a datum narození, jak je definováno ve schématu.

Vkládání řádků do tabulky

Nyní, když jsme vytvořili tabulku, vložíme do této tabulky studenta. Vytvoříme dotaz a poté pomocí metody execute () spustíme dotaz na serveru MySQL pomocí Pythonu.

>>> query = 'INSERT INTO students (name, id, grade, dob) VALUES (“John”, 1, 3, “2020-7-04”)'
>>> kurzor.provést (dotaz)
>>> sql_db.spáchat()

Tento dotaz přidá studenta s daty definovanými v dotazu do tabulky. Stejným způsobem můžeme do tabulky přidat další studenty.

POZNÁMKA: Změny budou použity v databázi pouze v případě, že spustíte sql_db.commit () po provedení změn.

Výběr řádků z tabulky

Příkaz SELECT v MySQL se používá k vrácení dat z tabulky. Ke spuštění dotazu použijeme metodu execute () a poté pomocí metody fetchall () získáme seznam všech studentů. Poté můžeme použít smyčku for k zobrazení všech studentů

>>> query = 'SELECT * FROM students'
>>> kurzor.provést (dotaz)
>>> výsledek = kurzor.fetchall ()
>>> pro x ve výsledku:
… Tisknout (x)
('John', 1, 3, datetime.datum (2020, 7, 4))

Vidíme, že jsou vrácena pouze data pro jednoho studenta, protože v tabulce máme pouze jednoho studenta. K určení omezení můžeme použít příkaz WHERE v MySQL s příkazem SELECT. Například pokud chceme vrátit studenty pouze do 4. ročníku, můžeme použít následující dotaz:

>>> dotaz = 'VYBRAT * OD ŽÁKŮ KDE známka = 4'
>>> kurzor.provést (dotaz)
>>> výsledek = kurzor.fetchall ()
>>> pro x ve výsledku:
… Tisknout (x)

Výše uvedený kód načte pouze studenty ze 4. ročníku.

Aktualizace řádku

V této části si ukážeme, jak aktualizovat data studentů v tabulce MySQL pomocí Pythonu. K aktualizaci údajů konkrétních studentů použijeme příkaz UPDATE s příkazy WHERE a SET v MySQL. Příkaz WHERE se používá k určení, které řádky budou aktualizovány, a příkaz SET se používá k definování hodnot použitých pro aktualizaci.

>>> query = 'UPDATE students SET name = "Mark" WHERE id = 4'
>>> kurzor.provést (dotaz)
>>> sql_db.spáchat()

Nyní se pokusíme načíst data studentů z tabulky pomocí příkazu SELECT.

>>> query = 'SELECT * FROM students WHERE id = 4'
>>> kurzor.provést (dotaz)
>>> pro x v kurzoru:
… Tisknout (x)
('Mark', 4, 4, datetime.datum (2020, 7, 15))

Nyní vidíme, že jméno studenta s id 4 bylo změněno na Mark.

Odstranění řádku

Řádek z tabulky můžeme odstranit použitím příkazu DELETE v MySQL pomocí Pythonu. K odstranění konkrétních studentů z tabulky použijeme příkaz DELETE s příkazem WHERE.

>>> query = 'ODSTRÁNIT OD studentů WHERE id = 2'
>>> kurzor.provést (dotaz)
>>> sql_db.spáchat()

Nyní můžeme všechny studenty vrátit z tabulky pomocí příkazu SELECT.

>>> query = 'SELECT * FROM students'
>>> kurzor.provést (dotaz)
>>> pro x v kurzoru:
… Tisknout (x)
('John', 1, 3, datetime.datum (2020, 7, 4))
('John', 3, 3, datetime.datum (2020, 7, 8))
('Mark', 4, 4, datetime.datum (2020, 7, 15))

Vidíme, že tabulka neobsahuje studenta s ID 2, protože jsme studenta z tabulky odstranili.

Upuštění stolu

MySQL.konektorový modul lze také použít k odložení stolu. Můžeme provést příkaz DROP v MySQL pomocí metody execute ().

>>> kurzor = sql_db.kurzor()
>>> query = 'DROP TABLE students'
>>> kurzor.provést (dotaz)

Výše uvedený kód odstraní tabulku s názvem studenti při spuštění v Pythonu.

Tím končí naše diskuse o databázích SQL. Ukázali jsme vám, jak pomocí Pythonu aplikovat různé dotazy na databázi MySQL. Dále použijeme operace CRUD na databázi NoSQL nazvanou MongoDB

Provádění operací CRUD v MongoDB

Abychom mohli komunikovat s MongoDB pomocí Pythonu, musíme nejprve nainstalovat pymongo, což je ovladač MongoDB pro Python.

[chráněno e-mailem]: ~ $ sudo pip install pymongo

nebo

[chráněno e-mailem]: ~ $ sudo pip3 install pymongo

Vytvoření databáze

Můžeme se připojit k MongoDB pomocí metody MongoClient () modulu pymongo v MongoDB. Před provedením jakékoli akce se musíme připojit k databázi MongoDB.

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

Po připojení k datovému kufru můžeme provést následující řádek a vytvořit novou databázi s názvem demo_db.

>>> db = klient ['demo_db']

Pokud databáze již existuje, je tento příkaz ignorován.

Vytvoření sbírky

Nyní, když jsme vytvořili databázi, vytvoříme v pojmenované databázi kolekci s názvem studenti.

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

POZNÁMKA: MongoDB nevytvoří kolekci, dokud do ní nezadáte data. Proto pokud se pokusíte o přístup ke kolekci po spuštění výše uvedeného kódu, zjistíte, že v databázi není nic.

Unlined MySQL, nemusíme definovat schéma, když vytváříme novou kolekci, protože MongoDB je nerelační databáze.

Vložení dokumentu

Po vytvoření kolekce můžeme do kolekce vložit dokument. Nejprve musíme definovat slovník a poté můžeme pomocí metody insert_one () vložit data definovaná ve slovníku do kolekce.

POZNÁMKA: MongoDB automaticky vytvoří pro každý dokument jedinečný znak „_id“; proto nemusíme specifikovat id.

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

>>> výsledek = sloupec.insert_one (data)

Do výše uvedeného dokumentu jsme vložili jméno, známku a rod. Nyní vložíme do kolekce studentů dokument, který má pole pro věk.

>>> data =
… "Name": "Mark",
… „Známka“: 4,
… "Dob": "2020-04-09",
… „Věk“: 8

>>> výsledek = sloupec.insert_one (data)

Vidíme, že tento příkaz nevyvolá chybu. Protože MongoDB je nerelační databáze, můžeme do dokumentu přidat jakékoli informace, které chceme.

Získávání dokumentů

V této části použijeme k získání dat z databáze metody find () a find_one (). Metoda find () má dva argumenty: první se používá k filtrování dokumentů a druhý k definování polí dokumentu, který chceme vrátit. Například pokud chceme získat ID „John“, můžeme spustit následující dotaz:

>>> výsledek = sloupec.najít ("name": "John", "_id": 1)
>>> pro x ve výsledku:
… Tisknout (x)
'_id': ObjectId ('5f8f0514cb12c01f7420656e')

Alternativně můžeme získat všechny dokumenty ze sbírky pomocí následujícího dotazu:

>>> výsledek = sloupec.nalézt()
>>> pro x ve výsledku:
… Tisknout (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

Aktualizace dokumentů

Modul pymongo nabízí metody update_one () a update_many () pro aktualizaci dokumentů ve sbírce. Obě metody mají dva argumenty: první definuje, který dokument se má změnit, a druhý definuje nové hodnoty. Nyní změníme známku studenta „Mark“.

>>> query = "name": "Mark"
>>> value = "$ set": "grade": 5
>>> sl.update_one (dotaz, hodnota)
>>> pro x v sl.nalézt():
… Tisknout (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

Odstranění dokumentu

Modul pymongo v Pythonu má dvě metody, tj.E., delete_one () a delete_many () pro mazání dokumentů. Obě metody mají argument, který vybere dokument, který se má odstranit. S následujícím kódem odstraníme studenta jménem „John“.

>>> query = "name": "John"
>>> sl.delete_one (dotaz)
>>> pro x v sl.nalézt():
… Tisknout (x)
'_id': ObjectId ('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'id': 2, 'grade': 5, 'dob': '2020-04-09', 'age': 8

Zrušení sbírky

Můžeme zrušit kolekci v MongoDB pomocí metody drop () modulu pymongo v Pythonu. Nejprve se musíme připojit k databázi; poté vybereme databázi, která obsahuje kolekci, kterou chceme odebrat. Po výběru kolekce z databáze můžeme kolekci odebrat pomocí metody drop (). Následující kód zruší studenty.

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

Závěr

Znalost databází je nezbytná, pokud chcete vytvořit webovou aplikaci. Téměř každý programovací jazyk má rámce a knihovny pro vývoj webového prostředí. Python lze použít při vývoji back-endového webu, a proto můžeme při práci s back-endovými rámci Pythonu interagovat s databázemi pomocí Pythonu. V tomto článku jsme vám ukázali, jak komunikovat s databázemi MongoDB a MySQL pomocí jednoduchých operací CRUD napsaných v Pythonu.

Přidejte gesta myši do Windows 10 pomocí těchto bezplatných nástrojů
V posledních letech se počítače a operační systémy značně vyvinuly. Bývaly doby, kdy uživatelé museli procházet správci souborů pomocí příkazů. Stejně...
Ovládejte a spravujte pohyb myši mezi více monitory ve Windows 10
Správce myší se dvěma displeji umožňuje ovládat a konfigurovat pohyb myši mezi více monitory zpomalením jeho pohybů poblíž hranice. Windows 10/8 vám u...
WinMouse vám umožňuje přizpůsobit a vylepšit pohyb ukazatele myši na PC s Windows
Chcete-li vylepšit výchozí funkce ukazatele myši, použijte freeware WinMouse. Přidává další funkce, které vám pomohou vytěžit ze své skromné ​​myši ma...