Python

CRUD operācijas SQL un NoSQL datu bāzēs, izmantojot Python

CRUD operācijas SQL un NoSQL datu bāzēs, izmantojot Python
Lietojumprogrammā var izmantot divus galvenos datu bāzu veidus: relāciju datu bāzes (SQL) un ar relāciju nesaistītas datu bāzes (NoSQL). Abi ir plaši izmantoti, taču viena izvēle ir atkarīga no uzglabājamo datu veida. Datu bāzēs var veikt četras pamata darbības: izveidot, lasīt, atjaunināt un dzēst (CRUD).

Mēs varam mijiedarboties ar datu bāzēm, izmantojot jebkuru programmēšanas valodu, vai arī mēs varam izmantot programmatūras programmu, kas ļauj mums mijiedarboties ar datu bāzi, izmantojot GUI. Šajā rakstā mēs apspriedīsim datu bāzes un parādīsim, kā ar tām mijiedarboties, izmantojot Python programmēšanas valodu.

Relāciju datu bāzes (SQL)

Relāciju datu bāzes (SQL) shēmas ziņā atšķiras no nerelāciju datu bāzēm (NoSQL). Shēma ir veidne, kas nosaka uzglabājamo datu struktūru. Relāciju datu bāzēs mēs izveidojam tabulas datu glabāšanai. Tabulas shēma tiek definēta, izveidojot tabulu. Piemēram, ja mēs vēlamies glabāt datus par studentiem relāciju datu bāzē, tad mēs izveidosim studentu tabulu un definēsim tabulas shēmu, kurā varētu būt vārds, reģistrācijas numurs, pakāpe utt. katra studenta. Pēc shēmas izveidošanas mēs datus glabāsim tabulas rindās. Ir svarīgi atzīmēt, ka mēs nevaram saglabāt datus, kas nav definēti shēmā. Šajā piemērā atzīmi, ko students saņēma par eksāmenu, nevar saglabāt tabulā, jo shēmā šiem datiem nav definēta kolonna.

Šajā sarakstā ir iekļautas dažas populāras relāciju datu bāzes:

Datu bāzes, kas nav saistītas ar relāciju (NoSQL)

Kā jau tika apspriests iepriekš, ar relāciju nesaistītām datu bāzēm nav definētas shēmas. Ne-relāciju datu bāzēs tabulu vietā ir kolekcijas, un šajās kolekcijās ir dokumenti, kas ir līdzvērtīgi relāciju datu bāzes rindām. Piemēram, ja mēs vēlamies izveidot ne-relāciju datu bāzi studentu datu glabāšanai, mēs varam izveidot lietotāju kolekciju, un šajā kolekcijā mēs glabāsim dokumentu katram studentam. Šiem dokumentiem nav definēta shēma, un katram studentam varat saglabāt visu nepieciešamo.

CRUD operāciju veikšana MySQL

Tagad mēs parādīsim, kā mijiedarboties ar MySQL, izmantojot Python.

MySQL draivera instalēšana Python

Lai mijiedarbotos ar MySQL, izmantojot Python, mums vispirms ir jāinstalē MySQL draiveris Python.

[aizsargāts pa e-pastu]: ~ $ sudo pip3 instalējiet mysql-connector-python

vai

[aizsargāts pa e-pastu]: ~ $ sudo pip instalēt mysql-connector-python

Datu bāzes izveidošana

Pirms datu bāzes izveidošanas mums ir jāizveido savienojums ar MySQL serveri, izmantojot Python. MySQL.savienotāju modulis piedāvā metodi connect (), lai palīdzētu izveidot savienojumu ar MySQL, izmantojot Python.

>>> importēt mysql.savienotājs
// Aizstāt ar saviem IP un servera akreditācijas datiem
>>> sql = mysql.savienotājs.savienot (
... resursdators = 'localhost',
… Lietotājs = 'root',
... parole = '12345'
…)
>>> druka (kvl)

Šis ziņojums parāda, ka mēs esam veiksmīgi izveidojuši savienojumu ar MySQL datu bāzi, izmantojot Python. Tagad mēs izpildīsim SQL vaicājumu MySQL serverī, izmantojot mysql metodi execute ().savienotāja modulis.

>>> kursors = kvl.kursors ()
>>> vaicājums = 'DATU BĀZES IZVEIDE demo_db'
>>> kursors.izpildīt (vaicājums)

Iepriekš minētais kods MySQL izveidos datu bāzi ar nosaukumu demo_db.

Tabulas izveide

Tagad, kad esam izveidojuši datu bāzi, mēs izveidosim jaunu tabulu ar nosaukumu studenti. Lai izveidotu tabulu, mums ir jāizveido savienojums ar datu bāzi.

>>> sql_db = mysql.savienotājs.savienot (
... resursdators = 'localhost',
… Lietotājs = 'root',
... parole = '12345',
... datu bāze = 'demo_db'
…)

Pēc savienojuma izveidošanas ar datu bāzi mēs izmantosim metodi execute (), lai palaistu SQL vaicājumu, lai izveidotu tabulu ar shēmu.

>>> query = "CREATE TABLE students (vārds VARCHAR (64), id INT, INT pakāpe, dob DATE)";
>>> kursors.izpildīt (vaicājums);

Iepriekš minētā komanda izveidos tabulu ar nosaukumu studenti datu bāzē demo_db; tabulā mēs varam ievietot tikai vārdu, ID, pakāpi un dzimšanas datumu, kā noteikts shēmā.

Rindu ievietošana tabulā

Tagad, kad esam izveidojuši tabulu, šajā tabulā ievietosim studentu. Mēs izveidosim vaicājumu un pēc tam izmantosim metodi execute (), lai vaicājumu palaistu MySQL serverī, izmantojot Python.

>>> vaicājums = 'INSERT INTO students (name, id, grade, dob) VALUES (“John”, 1, 3, “2020-7-04”) ”
>>> kursors.izpildīt (vaicājums)
>>> sql_db.apņemties ()

Šis vaicājums tabulā pievienos studentu ar vaicājumā definētajiem datiem. Tādā pašā veidā mēs varam pievienot tabulai papildu studentus.

PIEZĪME. Izmaiņas datu bāzei tiks piemērotas tikai tad, ja palaidīsit sql_db.apņemties () pēc izmaiņu piemērošanas.

Rindu atlase tabulā

Atlasiet MySQL priekšrakstu, lai atgrieztu datus no tabulas. Mēs izmantosim metodi execute (), lai palaistu vaicājumu, un pēc tam mēs izmantosim metodi fetchall (), lai iegūtu visu studentu sarakstu. Tad mēs varam izmantot for for loop, lai parādītu visus studentus

>>> vaicājums = 'Atlasīt * no studentiem'
>>> kursors.izpildīt (vaicājums)
>>> rezultāts = kursors.atnest ()
>>> rezultātam x:
... drukāt (x)
('Jānis', 1, 3, datuma laiks.datums (2020., 7., 4.))

Mēs varam redzēt, ka tiek atgriezti tikai viena studenta dati, jo mums tabulā ir tikai viens students. Mēs varam izmantot WHERE paziņojumu MySQL ar SELECT paziņojumu, lai norādītu ierobežojumus. Piemēram, ja mēs vēlamies atgriezt skolēnus tikai 4. klasē, mēs varam izmantot šādu vaicājumu:

>>> vaicājums = 'ATLASIET * NO SKOLĒNIEM, KUR vērtējums = 4
>>> kursors.izpildīt (vaicājums)
>>> rezultāts = kursors.atnest ()
>>> rezultātam x:
... drukāt (x)

Šis kods iegūs tikai 4. klases skolēnus.

Rindas atjaunināšana

Šajā sadaļā mēs parādīsim, kā atjaunināt studentu datus MySQL tabulā, izmantojot Python. Mēs izmantosim UPDATE paziņojumu ar WHERE un SET paziņojumiem MySQL, lai atjauninātu konkrētu studentu datus. WHERE paziņojums tiek izmantots, lai noteiktu, kuras rindas tiks atjauninātas, un SET paziņojums tiek izmantots, lai noteiktu atjaunināšanai izmantotās vērtības.

>>> query = 'UPDATE studentu SET nosaukums = "Atzīmēt" WHERE id = 4'
>>> kursors.izpildīt (vaicājums)
>>> sql_db.apņemties ()

Tagad mēs mēģināsim nolasīt studentu datus no tabulas, izmantojot SELECT.

>>> vaicājums = 'Atlasīt * no studentiem, kur id = 4'
>>> kursors.izpildīt (vaicājums)
>>> x kursorā:
... drukāt (x)
('Atzīmēt', 4, 4, datuma laiks.datums (2020., 7., 15.)

Tagad mēs varam redzēt, ka studenta vārds ar ID 4 ir mainīts uz Mark.

Rindas dzēšana

Mēs varam izdzēst rindu no tabulas, lietojot MySQL priekšrakstu DELETE, izmantojot Python. Mēs izmantosim DELETE paziņojumu ar WHERE paziņojumu, lai no tabulas izdzēstu konkrētus studentus.

>>> query = 'Dzēst no studentiem, kur id = 2'
>>> kursors.izpildīt (vaicājums)
>>> sql_db.apņemties ()

Tagad mēs varam atgriezt visus studentus no tabulas, izmantojot SELECT.

>>> vaicājums = 'Atlasīt * no studentiem'
>>> kursors.izpildīt (vaicājums)
>>> x kursorā:
... drukāt (x)
('Jānis', 1, 3, datuma laiks.datums (2020., 7., 4.))
('Jānis', 3, 3, datuma laiks.datums (2020., 7., 8.)
('Atzīmēt', 4, 4, datuma laiks.datums (2020., 7., 15.)

Mēs varam redzēt, ka tabulā nav studenta ar ID 2, jo mēs esam noņēmuši studentu no galda.

Galda nomešana

MySQL.savienotāju moduli var izmantot arī, lai nomestu galdu. Mēs varam izpildīt DROP priekšrakstu MySQL, izmantojot metodi execute ().

>>> kursors = sql_db.kursors ()
>>> query = 'DROP TABLE students'
>>> kursors.izpildīt (vaicājums)

Iepriekš izpildītais kods izdzēsīs tabulu ar nosaukumu studenti, kad tā tiks izpildīta Python.

Tas noslēdz mūsu diskusiju par SQL datu bāzēm. Mēs esam parādījuši, kā izmantot dažādus vaicājumus MySQL datu bāzei, izmantojot Python. Pēc tam CRUD darbības tiks piemērotas NoSQL datu bāzei ar nosaukumu MongoDB

CRUD operāciju veikšana MongoDB

Lai mijiedarbotos ar MongoDB, izmantojot Python, vispirms ir jāinstalē pymongo, kas ir Python MongoDB draiveris.

[e-pasts aizsargāts]: ~ $ sudo pip install pymongo

vai

[aizsargāts pa e-pastu]: ~ $ sudo pip3 instalējiet pymongo

Datu bāzes izveidošana

Mēs varam izveidot savienojumu ar MongoDB, izmantojot MongoDB pymongo moduļa metodi MongoClient (). Pirms jebkādu darbību veikšanas mums ir jāizveido savienojums ar MongoDB datu bāzi.

>>> importēt pymongo
>>> klients = pymongo.MongoClient ('mongodb: // localhost: 27017 /')

Pēc savienojuma izveidošanas ar datu bāzi mēs varam izpildīt šo rindu, lai izveidotu jaunu datu bāzi ar nosaukumu demo_db.

>>> db = klients ['demo_db']

Ja datu bāze jau pastāv, šī komanda tiek ignorēta.

Kolekcijas izveide

Tagad, kad esam izveidojuši datu bāzi, nosauktajā datu bāzē izveidosim kolekciju ar nosaukumiem studenti.

>>> importēt pymongo
>>> klients = pymongo.MongoClient ('mongodb: // localhost: 27017 /')
>>> db = klients ['demo_db']
>>> col = db ['studenti']

PIEZĪME: MongoDB neveido kolekciju, kamēr tajā neesat ievadījis datus. Tādēļ, mēģinot piekļūt kolekcijai pēc iepriekš minētā koda izpildīšanas, jūs atradīsit, ka datu bāzē nav nekā.

Bez līnijas MySQL, mums nav jādefinē shēma, veidojot jaunu kolekciju, jo MongoDB ir datu bāze, kas nav relācija.

Dokumenta ievietošana

Pēc kolekcijas izveidošanas mēs varam ievietot dokumentu kolekcijas iekšpusē. Pirmkārt, mums jādefinē vārdnīca, un pēc tam mēs varam izmantot metodi insert_one (), lai vārdnīcā definētos datus ievietotu kolekcijā.

PIEZĪME: MongoDB katram dokumentam automātiski izveido unikālu '_id'; tāpēc mums nav jānorāda ID.

>>> dati =
… "Vārds": "Jānis",
… "Pakāpe": 3,
… "Dob": "2020-04-03"

>>> rezultāts = kol.ievietot_viens (dati)

Iepriekš minētajā dokumentā mēs ievietojām vārdu, pakāpi un amatu. Tagad studentu kolekcijā mēs ievietosim dokumentu, kurā ir lauks vecumam.

>>> dati =
… "Nosaukums": "Atzīmēt",
… "Pakāpe": 4,
… "Dob": "2020-04-09",
… "Vecums": 8

>>> rezultāts = kol.ievietot_viens (dati)

Mēs varam redzēt, ka šī komanda neizraisa kļūdu. Tā kā MongoDB ir ar relāciju nesaistīta datu bāze, mēs dokumentā varam pievienot visu nepieciešamo informāciju.

Dokumentu iegūšana

Šajā sadaļā mēs izmantosim metodes find () un find_one (), lai iegūtu datus no datu bāzes. Metodei find () nepieciešami divi argumenti: pirmo izmanto dokumentu filtrēšanai, bet otro - tā dokumenta lauku definēšanai, kuru mēs vēlamies atgriezt. Piemēram, ja mēs vēlamies iegūt “Jāņa” ID, mēs varam izpildīt šādu vaicājumu:

>>> rezultāts = kol.atrast ("name": "John", "_id": 1)
>>> rezultātam x:
... drukāt (x)
'_id': ObjectId ('5f8f0514cb12c01f7420656e')

Alternatīvi, mēs varam iegūt visus dokumentus no kolekcijas, izmantojot šādu vaicājumu:

>>> rezultāts = kol.atrast ()
>>> rezultātam x:
... drukāt (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

Dokumentu atjaunināšana

Pymongo modulis piedāvā metodes update_one () un update_many (), lai atjauninātu kolekcijas dokumentus. Abām metodēm ir divi argumenti: pirmais nosaka, kuru dokumentu mainīt, un otrais nosaka jaunās vērtības. Tagad mēs mainīsim studenta atzīmi “Atzīmēt”.

>>> query = "nosaukums": "Atzīmēt"
>>> value = "$ set": "pakāpe": 5
>>> kol.update_one (vaicājums, vērtība)
>>> x kolonnā.atrast ():
... drukāt (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

Dokumenta dzēšana

Python pymongo modulim ir divas metodes, t.i.e., delete_one () un delete_many (), dokumentu dzēšanai. Abās metodēs tiek izmantots arguments, kas izvēlas dokumentu, kuru vēlaties dzēst. Izmantojot šo kodu, mēs izdzēsīsim studentu ar nosaukumu “Jānis”.

>>> query = "name": "John"
>>> kol.delete_one (vaicājums)
>>> x kolonnā.atrast ():
... drukāt (x)
'_id': ObjectId ('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'id': 2, 'grade': 5, 'dob': '2020-04-09', 'age': 8

Kolekcijas nomešana

Mēs varam nomest kolekciju MongoDB, izmantojot Python pymongo moduļa drop () metodi. Pirmkārt, mums ir jāizveido savienojums ar datu bāzi; pēc tam mēs atlasām datu bāzi, kurā atrodas kolekcija, kuru mēs vēlamies noņemt. Pēc kolekcijas atlases no datu bāzes mēs varam noņemt kolekciju, izmantojot drop () metodi. Šis kods atmetīs studentus.

>>> importēt pymongo
>>> klients = pymongo.MongoClient ('mongodb: // localhost: 27017 /')
>>> db = klients ['demo_db']
>>> col = db ['studenti']
>>> kol.nomest ()

Secinājums

Zināšanas par datu bāzēm ir būtiskas, ja vēlaties izveidot tīmekļa lietojumprogrammu. Gandrīz katrai programmēšanas valodai ir pamatprogrammas un bibliotēkas aizmugures tīmekļa izstrādei. Python var izmantot aizmugures tīmekļa izstrādē, un tāpēc mēs varam mijiedarboties ar datu bāzēm, izmantojot Python, strādājot ar Python backend ietvariem. Šajā rakstā mēs parādījām, kā mijiedarboties ar MongoDB un MySQL datu bāzēm, izmantojot vienkāršas CRUD darbības, kas rakstītas Python.

Kā izstrādāt spēli Linux
Pirms desmit gadiem maz Linux lietotāju varētu paredzēt, ka viņu iecienītā operētājsistēma kādu dienu būs populāra spēļu platforma komerciālām videosp...
Komerciālo spēļu dzinēju atvērtā koda porti
Bezmaksas, atvērtā koda un starpplatformu spēļu dzinēju atpūtu var izmantot, lai spēlētu vecos, kā arī dažus no diezgan nesenajiem spēļu nosaukumiem. ...
Labākās komandrindas spēles Linux
Komandrinda nav tikai lielākais sabiedrotais, lietojot Linux, bet tā var būt arī izklaides avots, jo to var izmantot, lai spēlētu daudzas jautras spēl...