Piton

CRUD operacije s bazama podataka SQL i NoSQL pomoću Pythona

CRUD operacije s bazama podataka SQL i NoSQL pomoću Pythona
Dvije su glavne vrste baza podataka koje se mogu koristiti s aplikacijom: relacijske baze podataka (SQL) i nerelacijske baze podataka (NoSQL). Obje se široko koriste, ali odabir jednog ovisi o vrsti podataka koji će se pohraniti. Četiri su osnovne operacije koje se mogu izvoditi na bazama podataka: stvaranje, čitanje, ažuriranje i brisanje (CRUD).

Možemo komunicirati s bazama podataka koristeći bilo koji programski jezik ili možemo koristiti softverski program koji nam omogućuje interakciju s bazom podataka koristeći GUI. U ovom ćemo članku razgovarati o bazama podataka i pokazati vam kako komunicirati s njima koristeći programski jezik Python.

Relacijske baze podataka (SQL)

Relacijske baze podataka (SQL) razlikuju se od nerelacijskih baza podataka (NoSQL) u smislu sheme. Shema je predložak koji definira strukturu podataka koje ćete pohraniti. U relacijskim bazama podataka izrađujemo tablice za pohranu podataka. Shema tablice definira se kada se kreira tablica. Na primjer, ako želimo podatke o studentima pohraniti u relacijsku bazu podataka, tada ćemo stvoriti tablicu učenika i definirati shemu tablice koja može sadržavati ime, registracijski broj, ocjenu itd. svakog učenika. Nakon stvaranja sheme podatke ćemo pohraniti u retke tablice. Važno je napomenuti da ne možemo pohraniti podatke koji nisu definirani u shemi. U ovom primjeru ocjena koju je student dobio na ispitu ne može se pohraniti u tablicu jer u shemi nismo definirali stupac za te podatke.

Sljedeći popis uključuje neke popularne relacijske baze podataka:

Nerelacijske baze podataka (NoSQL)

Kao što je gore spomenuto, nerelacijske baze podataka nemaju definiranu shemu. Nerelacijske baze podataka imaju zbirke umjesto tablica i te zbirke sadrže dokumente koji su ekvivalentni redovima u relacijskoj bazi podataka. Na primjer, ako želimo stvoriti nerelacijsku bazu podataka za pohranu podataka o studentima, možemo stvoriti zbirku korisnika i u ovoj ćemo zbirci pohraniti dokument za svakog učenika. Ti dokumenti nemaju definiranu shemu i možete pohraniti sve što želite za svakog učenika.

Izvođenje CRUD operacija u MySQL-u

Sada ćemo vam pokazati kako komunicirati s MySQL-om pomoću Pythona.

Instaliranje MySQL upravljačkog programa za Python

Da bismo komunicirali s MySQL-om pomoću Pythona, prvo moramo instalirati MySQL upravljački program u Python.

[zaštićena e-poštom]: ~ $ sudo pip3 instalirati mysql-connector-python

ili

[zaštićena e-poštom]: ~ $ sudo pip instalirati mysql-connector-python

Izrada baze podataka

Prije stvaranja baze podataka, moramo se povezati s MySQL poslužiteljem pomoću Pythona. MySQL.module povezivanja nudi metodu connect () koja pomaže uspostaviti vezu s MySQL-om pomoću Pythona.

>>> uvoz mysql.konektor
// Zamijenite vlastitim vjerodajnicama za IP i poslužitelj
>>> sql = mysql.konektor.Spojiti(
… Host = 'localhost',
… User = 'root',
… Lozinka = '12345'
…)
>>> ispis (sql)

Ova poruka pokazuje da smo uspješno stvorili vezu s MySQL bazom podataka koristeći Python. Sada ćemo pokrenuti SQL upit na MySQL poslužitelju metodom execute () iz mysqla.modul konektora.

>>> pokazivač = sql.pokazivač ()
>>> query = 'IZRADI BAZU BAZA demo_db'
>>> pokazivač.izvršiti (upit)

Gornji kod stvorit će bazu podataka demo_db u MySQL-u.

Izrada tablice

Sada kada smo stvorili bazu podataka, stvorit ćemo novu tablicu s imenom studenti. Da bismo stvorili tablicu, moramo se povezati s bazom podataka.

>>> sql_db = mysql.konektor.Spojiti(
… Host = 'localhost',
… User = 'root',
… Lozinka = '12345',
... baza podataka = 'demo_db'
…)

Nakon povezivanja s bazom podataka, koristit ćemo metodu execute () za pokretanje SQL upita za izradu tablice sa shemom.

>>> query = "STVORI TABELU učenika (ime VARCHAR (64), id INT, ocjena INT, dob DATE)";
>>> pokazivač.izvršiti (upit);

Gornja naredba će stvoriti tablicu s imenom studenti u bazi demo_db; u tablicu možemo umetnuti samo ime, id, ocjenu i datum rođenja, kako je definirano u shemi.

Umetanje redova u tablicu

Sad kad smo stvorili tablicu, u ovu ćemo tablicu umetnuti učenika. Stvorit ćemo upit, a zatim upotrijebiti metodu execute () za pokretanje upita na MySQL poslužitelju pomoću Pythona.

>>> query = 'INSERT INTO students (name, id, grade, dob) VRIJEDNOSTI ("Ivan", 1, 3, "2020-7-04")'
>>> pokazivač.izvršiti (upit)
>>> sql_db.počiniti()

Ovaj će upit u tablicu dodati učenika s podacima definiranim u upitu. Na isti način možemo dodati dodatne učenike za stol.

NAPOMENA: Promjene će se primijeniti na bazu podataka samo ako pokrenete sql_db.commit () nakon primjene promjena.

Odabir redaka iz tablice

Izraz SELECT u MySQL koristi se za vraćanje podataka iz tablice. Upotrijebit ćemo metodu execute () za pokretanje upita, a zatim ćemo koristiti metodu fetchall () za dobivanje popisa svih učenika. Zatim možemo koristiti for petlju za prikaz svih učenika

>>> query = 'SELECT * FROM students'
>>> pokazivač.izvršiti (upit)
>>> rezultat = kursor.dohvatiti ()
>>> za x u rezultatu:
… Ispis (x)
('Ivan', 1, 3, datum i vrijeme.datum (2020, 7, 4))

Vidimo da se vraćaju samo podaci za jednog učenika, jer u tablici imamo samo jednog učenika. Izraz WHERE u MySQL-u s izrazom SELECT možemo koristiti za određivanje ograničenja. Na primjer, ako želimo vratiti učenike samo u 4. razred, možemo koristiti sljedeći upit:

>>> query = 'SELECT * FROM students WHERE ocjena = 4'
>>> pokazivač.izvršiti (upit)
>>> rezultat = kursor.dohvatiti ()
>>> za x u rezultatu:
… Ispis (x)

Gornji kod dohvatit će samo učenike od 4. razreda.

Ažuriranje retka

U ovom ćemo vam odjeljku pokazati kako ažurirati podatke o studentima u MySQL tablici pomoću Pythona. Upotrijebit ćemo UPDATE izraz s WHERE i SET izrazima u MySQL-u za ažuriranje podataka određenih učenika. Izraz WHERE koristi se za određivanje redova koji će se ažurirati, a izraz SET koristi za definiranje vrijednosti korištenih za ažuriranje.

>>> query = 'AŽURIRANJE učenika SET ime = "Označi" WHERE id = 4'
>>> pokazivač.izvršiti (upit)
>>> sql_db.počiniti()

Sada ćemo pokušati pročitati podatke učenika iz tablice pomoću naredbe SELECT.

>>> query = 'SELECT * FROM students WHERE id = 4'
>>> pokazivač.izvršiti (upit)
>>> za x u kurzoru:
… Ispis (x)
('Oznaka', 4, 4, datum i vrijeme.datum (2020, 7, 15))

Sada možemo vidjeti da je ime učenika s id 4 promijenjeno u Mark.

Brisanje retka

Redak iz tablice možemo izbrisati primjenom izraza DELETE u MySQL pomoću Pythona. Koristit ćemo izraz DELETE s izrazom WHERE za brisanje određenih učenika iz tablice.

>>> query = 'IZBRIŠI OD učenika GDJE id = 2'
>>> pokazivač.izvršiti (upit)
>>> sql_db.počiniti()

Sada možemo vratiti sve učenike iz tablice pomoću naredbe SELECT.

>>> query = 'SELECT * FROM students'
>>> pokazivač.izvršiti (upit)
>>> za x u kurzoru:
… Ispis (x)
('Ivan', 1, 3, datum i vrijeme.datum (2020, 7, 4))
('Ivan', 3, 3, datum i vrijeme.datum (2020, 7, 8))
('Oznaka', 4, 4, datum i vrijeme.datum (2020, 7, 15))

Vidimo da tablica ne sadrži učenika s id-om 2, jer smo učenika uklonili iz tablice.

Ispuštanje tablice

MySQL.modul konektora također se može koristiti za ispuštanje tablice. Izvedbu DROP možemo izvršiti u MySQL-u pomoću metode execute ().

>>> pokazivač = sql_db.pokazivač ()
>>> query = 'DROP TABLE students'
>>> pokazivač.izvršiti (upit)

Gornji kod će obrisati tablicu s imenima studenti kada se izvrši u Pythonu.

Time smo završili našu raspravu o SQL bazama podataka. Pokazali smo vam kako primijeniti različite upite na MySQL bazu podataka pomoću Pythona. Dalje, primijenit ćemo CRUD operacije na NoSQL bazu podataka koja se zove MongoDB

Izvođenje CRUD operacija u MongoDB-u

Da bismo komunicirali s MongoDB-om pomoću Pythona, prvo moramo instalirati pymongo, koji je MongoDB pokretački program za Python.

[zaštićena e-poštom]: ~ $ sudo pip install pymongo

ili

[e-pošta zaštićena]: ~ $ sudo pip3 instalirati pymongo

Izrada baze podataka

Na MongoDB se možemo povezati pomoću MongoClient () metode pymongo modula u MongoDB. Prije bilo kakvih radnji, moramo se povezati s bazom podataka MongoDB.

>>> uvoz pymongo
>>> klijent = pymongo.MongoClient ('mongodb: // localhost: 27017 /')

Nakon povezivanja s podatkovnom bazom, možemo izvršiti sljedeći redak za stvaranje nove baze podataka nazvane demo_db.

>>> db = klijent ['demo_db']

Ako baza podataka već postoji, tada se ova naredba zanemaruje.

Stvaranje zbirke

Sada kada smo stvorili bazu podataka, stvorit ćemo kolekciju s imenom studenti u bazi podataka koja se zove.

>>> uvoz pymongo
>>> klijent = pymongo.MongoClient ('mongodb: // localhost: 27017 /')
>>> db = klijent ['demo_db']
>>> col = db ['studenti']

NAPOMENA: MongoDB ne stvara zbirku dok u nju ne unesete podatke. Stoga, ako pokušate pristupiti zbirci nakon pokretanja gornjeg koda, ustanovit ćete da u bazi podataka nema ništa.

Neograničeni MySQL, ne moramo definirati shemu kada stvaramo novu zbirku, jer je MongoDB nerelacijska baza podataka.

Umetanje dokumenta

Nakon stvaranja zbirke, možemo umetnuti dokument unutar zbirke. Prvo moramo definirati rječnik, a zatim metodom insert_one () možemo umetnuti podatke definirane u rječniku u zbirku.

NAPOMENA: MongoDB automatski stvara jedinstveni '_id' za svaki dokument; stoga ne trebamo navesti id.

>>> podaci =
... "ime": "Ivan",
... "ocjena": 3,
… "Dob": "2020-04-03"

>>> rezultat = kol.insert_one (podaci)

U gornji dokument umetnuli smo ime, ocjenu i dob. Sada ćemo u zbirku učenika umetnuti dokument koji ima polje za dob.

>>> podaci =
... "name": "Označi",
... "ocjena": 4,
… "Dob": "2020-04-09",
... "dob": 8

>>> rezultat = kol.insert_one (podaci)

Vidimo da ova naredba ne dovodi do pogreške. Budući da je MongoDB nerelacijska baza podataka, u dokument možemo dodati sve informacije koje želimo.

Dobivanje dokumenata

U ovom ćemo odjeljku za dobivanje podataka iz baze podataka koristiti metode find () i find_one (). Metoda find () uzima dva argumenta: prvi se koristi za filtriranje dokumenata, a drugi za definiranje polja dokumenta koji želimo vratiti. Na primjer, ako želimo dobiti id "John", možemo pokrenuti sljedeći upit:

>>> rezultat = kol.pronađi ("name": "John", "_id": 1)
>>> za x u rezultatu:
… Ispis (x)
'_id': ObjectId ('5f8f0514cb12c01f7420656e')

Sve dokumente iz zbirke možemo dobiti i pomoću sljedećeg upita:

>>> rezultat = kol.pronaći()
>>> za x u rezultatu:
… Ispis (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

Ažuriranje dokumenata

Modul pymongo nudi metode update_one () i update_many () za ažuriranje dokumenata u zbirci. Obje metode uzimaju dva argumenta: prvi definira koji dokument treba promijeniti, a drugi definira nove vrijednosti. Sada ćemo promijeniti ocjenu učenika 'Oznaka'.

>>> upit = "name": "Označi"
>>> vrijednost = "$ set": "grade": 5
>>> kol.update_one (upit, vrijednost)
>>> za x u kol.pronaći():
… Ispis (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

Brisanje dokumenta

Pymongo modul u Pythonu ima dvije metode, tj.e., delete_one () i delete_many (), za brisanje dokumenata. Obje metode uzimaju argument koji odabire dokument za brisanje. Sljedećim kodom izbrisat ćemo učenika po imenu 'John'.

>>> upit = "name": "John"
>>> kol.delete_one (upit)
>>> za x u kol.pronaći():
… Ispis (x)
'_id': ObjectId ('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'id': 2, 'grade': 5, 'dob': '2020-04-09', 'age': 8

Ispuštanje zbirke

Kolekciju možemo ispustiti u MongoDB pomoću metode drop () modula pymongo u Pythonu. Prvo, moramo se povezati s bazom podataka; zatim odabiremo bazu podataka koja sadrži zbirku koju želimo ukloniti. Nakon odabira kolekcije iz baze podataka, kolekciju možemo ukloniti metodom drop (). Sljedeći će kôd ispustiti studente.

>>> uvoz pymongo
>>> klijent = pymongo.MongoClient ('mongodb: // localhost: 27017 /')
>>> db = klijent ['demo_db']
>>> col = db ['studenti']
>>> kol.pad()

Zaključak

Poznavanje baza podataka neophodno je ako želite izraditi web aplikaciju. Gotovo svaki programski jezik ima okvire i knjižnice za pozadinski web razvoj. Python se može koristiti u pozadinskom web razvoju i tako možemo komunicirati s bazama podataka koristeći Python dok radimo sa pozadinskim okvirima Pythona. U ovom smo članku pokazali kako komunicirati s MongoDB i MySQL bazama podataka pomoću jednostavnih CRUD operacija napisanih na Pythonu.

HD Remastered igre za Linux koje ranije nisu imale Linux izdanje
Mnogi programeri i izdavači igara dolaze s HD remasterom starih igara kako bi produžili životni vijek franšize, molimo obožavatelje da zatraže kompati...
Kako koristiti AutoKey za automatizaciju Linux igara
AutoKey je uslužni program za automatizaciju radne površine za Linux i X11, programiran na Python 3, GTK i Qt. Koristeći njegovu skriptiranje i MACRO ...
Kako prikazati brojač FPS-a u Linux igrama
Linux gaming dobio je velik poticaj kada je Valve najavio Linux podršku za Steam klijent i njihove igre 2012. godine. Od tada su mnoge AAA i indie igr...