Python

CRUD operacije s podatkovnimi bazami SQL in NoSQL z uporabo Pythona

CRUD operacije s podatkovnimi bazami SQL in NoSQL z uporabo Pythona
Z aplikacijo lahko uporabljate dve glavni vrsti baz podatkov: relacijske baze podatkov (SQL) in nerelacijske baze podatkov (NoSQL). Oba se pogosto uporabljata, vendar je izbira odvisna od vrste podatkov, ki bodo shranjeni. Na bazah podatkov lahko izvajamo štiri osnovne operacije: ustvarjanje, branje, posodabljanje in brisanje (CRUD).

Z bazami podatkov lahko komuniciramo s katerim koli programskim jezikom ali pa uporabimo programsko opremo, ki nam omogoča interakcijo z bazo podatkov s pomočjo grafičnega uporabniškega vmesnika. V tem članku bomo razpravljali o zbirkah podatkov in vam pokazali, kako z njimi komunicirati s programskim jezikom Python.

Relacijske zbirke podatkov (SQL)

Relacijske zbirke podatkov (SQL) se po shemi razlikujejo od nerelacijskih zbirk podatkov (NoSQL). Shema je predloga, ki določa strukturo podatkov, ki jih boste shranili. V relacijskih zbirkah podatkov ustvarjamo tabele za shranjevanje podatkov. Shema tabele je definirana, ko je tabela ustvarjena. Če želimo na primer podatke o študentih shraniti v relacijsko bazo podatkov, bomo ustvarili tabelo študentov in opredelili shemo tabele, ki lahko vključuje ime, registracijsko številko, oceno itd. vsakega študenta. Po izdelavi sheme bomo podatke shranili v vrstice tabele. Pomembno je omeniti, da ne moremo shraniti podatkov, ki v shemi niso definirani. V tem primeru ocene, ki jo je študent prejel na izpitu, ni mogoče shraniti v tabelo, ker v shemi nismo opredelili stolpca za te podatke.

Naslednji seznam vključuje nekaj priljubljenih relacijskih baz podatkov:

Nerelacijske zbirke podatkov (NoSQL)

Kot smo že omenili, nerelacijske zbirke podatkov nimajo definirane sheme. Nerelacijske zbirke podatkov imajo zbirke namesto tabel in te zbirke vsebujejo dokumente, ki so enakovredni vrsticam v relacijski bazi podatkov. Če želimo na primer ustvariti nerelacijsko bazo podatkov za shranjevanje študentskih podatkov, lahko ustvarimo zbirko uporabnikov in v tej zbirki bomo za vsakega študenta shranili dokument. Ti dokumenti nimajo definirane sheme in za vsakega študenta lahko shranite vse, kar želite.

Izvajanje CRUD operacij v MySQL

Zdaj vam bomo pokazali, kako uporabljati MySQL s pomočjo Pythona.

Namestitev gonilnika MySQL za Python

Za interakcijo z MySQL s pomočjo Pythona moramo najprej namestiti gonilnik MySQL v Python.

[zaščiteno po e-pošti]: ~ $ sudo pip3 namesti mysql-connector-python

ali

[e-pošta zaščitena]: ~ $ sudo pip namestite mysql-connector-python

Ustvarjanje baze podatkov

Pred ustvarjanjem baze podatkov se moramo povezati s strežnikom MySQL s pomočjo Pythona. MySQL.Connector modul ponuja metodo connect () za pomoč pri vzpostavljanju povezave z MySQL s pomočjo Pythona.

>>> uvozi mysql.priključek
// Zamenjajte s svojimi poverilnicami za IP in strežnik
>>> sql = mysql.priključek.povezati (
… Gostitelj = 'localhost',
… Uporabnik = 'root',
… Geslo = '12345'
…)
>>> natisni (sql)

To sporočilo kaže, da smo s pomočjo Pythona uspešno ustvarili povezavo z bazo podatkov MySQL. Zdaj bomo na strežniku MySQL izvedli poizvedbo SQL z uporabo metode execute () iz mysql.priključni modul.

>>> kazalec = sql.kazalec ()
>>> query = 'USTVARI DATABASO demo_db'
>>> kazalec.izvrši (poizvedba)

Zgornja koda bo v MySQL ustvarila bazo podatkov z imenom demo_db.

Ustvarjanje tabele

Zdaj, ko smo ustvarili bazo podatkov, bomo ustvarili novo tabelo z imenom študentje. Če želite ustvariti tabelo, se moramo povezati z bazo podatkov.

>>> sql_db = mysql.priključek.povezati (
… Gostitelj = 'localhost',
… Uporabnik = 'root',
… Geslo = '12345',
… Baza podatkov = 'demo_db'
…)

Po vzpostavitvi povezave z bazo podatkov bomo za izvedbo poizvedbe SQL uporabili metodo execute () za izdelavo tabele s shemo.

>>> query = "USTVARI ŠTUDENTJE (ime VARCHAR (64), id INT, ocena INT, dob DATE)";
>>> kazalec.izvrši (poizvedba);

Zgornji ukaz bo ustvaril tabelo z imeni študentov v zbirki podatkov demo_db; v tabelo lahko vstavimo samo ime, id, razred in datum rojstva, kot je določeno v shemi.

Vstavljanje vrstic v tabelo

Zdaj, ko smo ustvarili tabelo, bomo v to tabelo vstavili študenta. Ustvarili bomo poizvedbo in nato z metodo execute () zagnali poizvedbo na strežniku MySQL s pomočjo Pythona.

>>> query = 'INSERT INTO students (name, id, grade, dob) VALUES (“John”, 1, 3, “2020-7-04”)'
>>> kazalec.izvrši (poizvedba)
>>> sql_db.zaveži ()

Ta poizvedba bo v tabelo dodala študenta s podatki, določenimi v poizvedbi. Na enak način lahko na mizo dodamo dodatne učence.

OPOMBA: Spremembe bodo uporabljene v zbirki podatkov samo, če zaženete sql_db.commit () po uporabi sprememb.

Izbira vrstic iz tabele

Stavek SELECT v MySQL se uporablja za vrnitev podatkov iz tabele. Za zagon poizvedbe bomo uporabili metodo execute (), nato pa bomo z metodo fetchall () dobili seznam vseh študentov. Nato lahko z zanko for prikažemo vse učence

>>> query = 'SELECT * FROM students'
>>> kazalec.izvrši (poizvedba)
>>> rezultat = kazalka.prinesi ()
>>> za x v rezultatu:
… Natisni (x)
("Janez", 1, 3, datum in ura.datum (2020, 7, 4))

Vidimo lahko, da se vrnejo samo podatki za enega študenta, saj imamo v tabeli samo enega študenta. Za določitev omejitev lahko uporabimo stavek WHERE v MySQL z stavkom SELECT. Če želimo na primer učence vrniti samo v 4. razred, lahko uporabimo naslednjo poizvedbo:

>>> query = 'SELECT * FROM students WHERE grade = 4'
>>> kazalec.izvrši (poizvedba)
>>> rezultat = kazalka.prinesi ()
>>> za x v rezultatu:
… Natisni (x)

Zgornja koda bo prišla samo za učence 4. razreda.

Posodabljanje vrstice

V tem poglavju vam bomo pokazali, kako posodobite podatke o študentu v tabeli MySQL s pomočjo Pythona. Za posodobitev podatkov določenih študentov bomo uporabili stavek UPDATE s stavkoma WHERE in SET v MySQL. Stavek WHERE se uporablja za določanje, katere vrstice bodo posodobljene, stavek SET pa za določanje vrednosti, uporabljenih za posodobitev.

>>> query = 'POSODOBI študentov SET name = "Označi" WHERE id = 4'
>>> kazalec.izvrši (poizvedba)
>>> sql_db.zaveži ()

Zdaj bomo s pomočjo stavka SELECT poskusili prebrati podatke o študentu iz tabele.

>>> query = 'SELECT * FROM students WHERE id = 4'
>>> kazalec.izvrši (poizvedba)
>>> za x v kazalcu:
… Natisni (x)
('Oznaka', 4, 4, datum in čas.datum (2020, 7, 15))

Zdaj lahko vidimo, da je bilo ime študenta z id 4 spremenjeno v Mark.

Brisanje vrstice

Vrstico lahko izbrišemo iz tabele z uporabo stavka DELETE v MySQL s pomočjo Pythona. Za izbris določenih učencev iz tabele bomo uporabili stavek DELETE z stavkom WHERE.

>>> query = 'IZBRIŠI ŠTUDENTJE KJE id = 2'
>>> kazalec.izvrši (poizvedba)
>>> sql_db.zaveži ()

Zdaj lahko z ukazom SELECT vrnemo vse učence iz tabele.

>>> query = 'SELECT * FROM students'
>>> kazalec.izvrši (poizvedba)
>>> za x v kazalcu:
… Natisni (x)
("Janez", 1, 3, datum in ura.datum (2020, 7, 4))
("Janez", 3, 3, datum in ura.datum (2020, 7, 8))
('Oznaka', 4, 4, datum in čas.datum (2020, 7, 15))

Vidimo lahko, da tabela ne vsebuje študenta z id-jem 2, saj smo študenta odstranili iz tabele.

Spuščanje mize

MySQL.priključni modul lahko uporabite tudi za spuščanje tabele. Stavek DROP lahko izvedemo v MySQL z uporabo metode execute ().

>>> kurzor = sql_db.kazalec ()
>>> query = 'DROP TABLE študentov'
>>> kazalec.izvrši (poizvedba)

Zgornja koda bo ob izvedbi v Pythonu izbrisala tabelo z imeni študentov.

S tem smo zaključili našo razpravo o podatkovnih bazah SQL. Pokazali smo vam, kako uporabiti različne poizvedbe v zbirki podatkov MySQL s pomočjo Pythona. Nato bomo uporabili CRUD operacije v zbirki podatkov NoSQL, imenovani MongoDB

Izvajanje CRUD operacij v MongoDB

Za interakcijo z MongoDB z uporabo Pythona moramo najprej namestiti pymongo, ki je gonilnik MongoDB za Python.

[e-pošta zaščitena]: ~ $ sudo pip namestite pymongo

ali

[zaščiteno po e-pošti]: ~ $ sudo pip3 namesti pymongo

Ustvarjanje baze podatkov

Na MongoDB se lahko povežemo z metodo MongoClient () modula pymongo v MongoDB. Pred izvajanjem kakršnih koli dejanj se moramo povezati z bazo podatkov MongoDB.

>>> uvozi pymongo
>>> odjemalec = pymongo.MongoClient ('mongodb: // localhost: 27017 /')

Po povezavi z zbirko podatkov lahko izvedemo naslednjo vrstico, da ustvarimo novo bazo podatkov z imenom demo_db.

>>> db = odjemalec ['demo_db']

Če baza podatkov že obstaja, je ta ukaz prezrt.

Ustvarjanje zbirke

Zdaj, ko smo ustvarili bazo podatkov, bomo v zbirki z imenom ustvarili zbirko z imenom študentje.

>>> uvozi pymongo
>>> odjemalec = pymongo.MongoClient ('mongodb: // localhost: 27017 /')
>>> db = odjemalec ['demo_db']
>>> col = db ['učenci']

OPOMBA: MongoDB ne ustvari zbirke, dokler vanjo ne vnesete podatkov. Če torej poskusite dostopati do zbirke po zagonu zgornje kode, boste ugotovili, da v bazi ni ničesar.

Neobloženi MySQL, pri ustvarjanju nove zbirke nam ni treba definirati sheme, saj je MongoDB nerelacijska baza podatkov.

Vstavljanje dokumenta

Po ustvarjanju zbirke lahko znotraj zbirke vstavimo dokument. Najprej moramo definirati slovar, nato pa lahko z metodo insert_one () vstavimo podatke, določene v slovarju, v zbirko.

OPOMBA: MongoDB za vsak dokument samodejno ustvari edinstven '_id'; zato nam ni treba določiti id.

>>> podatki =
… "Ime": "Janez",
… "Ocena": 3,
… "Dob": "2020-04-03"

>>> rezultat = stolpec.insert_one (podatki)

V zgornji dokument smo vstavili ime, oceno in dob. Zdaj bomo v zbirko študentov vstavili dokument, ki ima polje za starost.

>>> podatki =
… "Name": "Označi",
… "Ocena": 4,
… "Dob": "2020-04-09",
… "Starost": 8

>>> rezultat = stolpec.insert_one (podatki)

Vidimo lahko, da ta ukaz ne povzroča napake. Ker je MongoDB nerelacijska baza podatkov, lahko v dokument dodamo kakršne koli informacije, ki jih želimo.

Pridobivanje dokumentov

V tem razdelku bomo uporabili metode find () in find_one () za pridobivanje podatkov iz baze podatkov. Metoda find () ima dva argumenta: prvi se uporablja za filtriranje dokumentov, drugi pa za določanje polj dokumenta, ki ga želimo vrniti. Če želimo na primer dobiti id »John«, lahko zaženemo naslednjo poizvedbo:

>>> rezultat = stolpec.najdi ("name": "John", "_id": 1)
>>> za x v rezultatu:
… Natisni (x)
'_id': ObjectId ('5f8f0514cb12c01f7420656e')

Vse dokumente iz zbirke lahko dobimo tudi z naslednjo poizvedbo:

>>> rezultat = stolpec.najti()
>>> za x v rezultatu:
… Natisni (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

Posodabljanje dokumentov

Modul pymongo ponuja metode update_one () in update_many () za posodabljanje dokumentov v zbirki. Obe metodi imata dva argumenta: prvi določa, kateri dokument spremeniti, drugi pa nove vrednosti. Zdaj bomo spremenili oceno študenta 'Mark'.

>>> poizvedba = "name": "Označi"
>>> vrednost = "$ set": "ocena": 5
>>> col.update_one (poizvedba, vrednost)
>>> za x v stolpcu.najti():
… Natisni (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

Modul pymongo v Pythonu ima dve metodi, tj.e., delete_one () in delete_many (), za brisanje dokumentov. Obe metodi sprejmeta argument, ki izbere dokument, ki ga želite izbrisati. Z naslednjo kodo bomo izbrisali študenta z imenom "John".

>>> poizvedba = "name": "John"
>>> col.delete_one (poizvedba)
>>> za x v stolpcu.najti():
… Natisni (x)
'_id': ObjectId ('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'id': 2, 'grade': 5, 'dob': '2020-04-09', 'age': 8

Spuščanje zbirke

Zbirko v MongoDB lahko spustimo z uporabo metode drop () modula pymongo v Pythonu. Najprej se moramo povezati z bazo podatkov; nato izberemo zbirko podatkov, ki vsebuje zbirko, ki jo želimo odstraniti. Po izbiri zbirke iz baze podatkov lahko zbirko odstranimo z metodo drop (). Naslednja koda bo spuščala študente.

>>> uvozi pymongo
>>> odjemalec = pymongo.MongoClient ('mongodb: // localhost: 27017 /')
>>> db = odjemalec ['demo_db']
>>> col = db ['učenci']
>>> col.spusti ()

Zaključek

Poznavanje baz podatkov je nujno, če želite narediti spletno aplikacijo. Skoraj vsak programski jezik ima ogrodje in knjižnice za razvoj spletnih strani. Python se lahko uporablja pri zalednem spletnem razvoju, zato lahko med delom z baznimi ogrodji Python komuniciramo s podatkovnimi bazami. V tem članku smo vam pokazali, kako uporabljati zbirke podatkov MongoDB in MySQL z uporabo preprostih CRUD operacij, napisanih v Pythonu.

Namestite najnovejši Dolphin Emulator za Gamecube & Wii v Linux
Dolphin Emulator vam omogoča igranje izbranih iger Gamecube in Wii na osebnih računalnikih Linux (PC). Dolphin Emulator je prosto dostopen in odprtok...
Kako uporabljati GameConqueror Cheat Engine v Linuxu
Članek zajema vodnik o uporabi varalnice GameConqueror v Linuxu. Številni uporabniki, ki igrajo igre v sistemu Windows, pogosto uporabljajo aplikacijo...
Najboljši emulatorji igralne konzole za Linux
V tem članku bo navedena priljubljena programska oprema za emulacijo igralne konzole, ki je na voljo za Linux. Emulacija je sloj združljivosti program...