Python

CRUD-toimingud Pythoni abil SQL- ja NoSQL-andmebaasidesse

CRUD-toimingud Pythoni abil SQL- ja NoSQL-andmebaasidesse
Rakendusega saab kasutada kahte peamist tüüpi andmebaase: relatsioonandmebaasid (SQL) ja mitterelatsioonilised andmebaasid (NoSQL). Mõlemat kasutatakse laialdaselt, kuid ühe valimine sõltub salvestatavate andmete tüübist. Andmebaasides saab teha nelja põhitoimingut: loomine, lugemine, värskendamine ja kustutamine (CRUD).

Saame andmebaasidega suhelda mis tahes programmeerimiskeelt kasutades või tarkvaraprogrammi abil, mis võimaldab meil graafikaliidese abil andmebaasiga suhelda. Selles artiklis käsitleme andmebaase ja näitame teile, kuidas nendega Pythoni programmeerimiskeelt kasutades suhelda.

Relatsioonandmebaasid (SQL)

Relatsioonandmebaasid (SQL) erinevad skeemi poolest mitte-relatsioonilistest andmebaasidest (NoSQL). Skeem on mall, mis määratleb salvestatavate andmete struktuuri. Relatsioonandmebaasides loome andmete salvestamiseks tabeleid. Tabeli skeem määratletakse tabeli loomisel. Näiteks kui me tahame salvestada andmeid õpilaste kohta relatsioonide andmebaasi, siis loome õpilastest tabeli ja määratleme tabeli skeemi, mis võib sisaldada nime, registreerimisnumbrit, hinnet jne. iga õpilase kohta. Pärast skeemi loomist salvestame andmed tabeli ridadesse. Oluline on märkida, et me ei saa salvestada andmeid, mis pole skeemis määratletud. Selles näites ei saa õpilasele eksamil saadud hinnet tabelisse salvestada, kuna me pole skeemis nende andmete jaoks veergu määranud.

Järgmine loend sisaldab mõningaid populaarseid relatsiooniandmebaase:

Mitte-suhtelised andmebaasid (NoSQL)

Nagu eespool arutletud, pole mitterelatsioonilistel andmebaasidel määratletud skeemi. Mitte-relatsioonilistes andmebaasides on tabelite asemel kollektsioonid ja need kollektsioonid sisaldavad dokumente, mis on samaväärsed relatsioonide andmebaasi ridadega. Näiteks kui soovime luua mitteseotud andmebaasi õpilasandmete salvestamiseks, saame luua kasutajate kogu ja sellesse kogusse salvestame iga õpilase jaoks dokumendi. Nendel dokumentidel pole määratletud skeemi ja saate iga õpilase jaoks salvestada kõik, mida soovite.

CRUD-toimingute tegemine MySQL-is

Nüüd näitame teile, kuidas MySQL-iga Pythoni abil suhelda.

MySQL-i draiveri installimine Pythoni jaoks

MySQL-iga Pythoni abil suhtlemiseks peame kõigepealt installima MySQL-i draiveri Pythoni.

[meiliga kaitstud]: ~ $ sudo pip3 installige mysql-connector-python

või

[meiliga kaitstud]: ~ $ sudo pip installib mysql-connector-python

Andmebaasi loomine

Enne andmebaasi loomist peame Pythoni abil ühenduse looma MySQL-serveriga. MySQL.ühendusmoodul pakub meetodit connect (), mis aitab luua ühendust MySQL-iga Pythoni abil.

>>> importige mysql.pistik
// Asenda oma IP- ja serveri mandaatidega
>>> sql = mysql.pistik.ühendama (
... host = 'localhost',
... kasutaja = 'juur',
... parool = '12345'
…)
>>> print (ruut)

See teade näitab, et oleme loonud Pythoni abil edukalt ühenduse MySQL-i andmebaasiga. Nüüd käivitame MySQL-i serveris SQL-i päringu, kasutades mysql-i meetodit execute ().pistikmoodul.

>>> kursor = ruut.kursor ()
>>> query = 'LOO ANDMEBAAS demo_db'
>>> kursor.täitma (päring)

Ülaltoodud kood loob MySQL-i andmebaasi nimega demo_db.

Tabeli loomine

Nüüd, kui oleme andmebaasi loonud, loome uue tabeli nimega õpilased. Tabeli loomiseks peame ühenduma andmebaasiga.

>>> sql_db = mysql.pistik.ühendama (
... host = 'localhost',
... kasutaja = 'juur',
... parool = '12345',
... andmebaas = 'demo_db'
…)

Pärast andmebaasiga ühenduse loomist kasutame SQL-päringu käivitamiseks meetodit execute () skeemi tabeli loomiseks.

>>> query = "LOE TABEL õpilased (nimi VARCHAR (64), id INT, hinne INT, dob DATE)";
>>> kursor.täitma (päring);

Ülaltoodud käsk loob andmebaasi demo_db tabeli nimega õpilased; tabelisse saab lisada ainult nime, ID, palgaastme ja sünnikuupäeva, nagu skeemis määratletud.

Ridade lisamine tabelisse

Nüüd, kui oleme tabeli loonud, sisestame sellesse tabelisse õpilase. Loome päringu ja seejärel kasutame meetodit execute () päringu käivitamiseks MySQL-i serveris Pythoni abil.

>>> query = 'INSERT INTO students (name, id, grade, dob) VALUES ("John", 1, 3, "2020-7-04") "
>>> kursor.täitma (päring)
>>> sql_db.pühenduma ()

See päring lisab tabelisse õpilase, kellel on päringus määratletud andmed. Samamoodi saame tabelisse lisada täiendavaid õpilasi.

MÄRKUS. Muudatusi rakendatakse andmebaasis ainult siis, kui käivitate sql_db.pühenduma () pärast muudatuste rakendamist.

Ridade valimine tabelist

MySQL-i käsku SELECT kasutatakse andmete tagastamiseks tabelist. Päringu käivitamiseks kasutame meetodit execute () ja seejärel meetodit fetchall () kõigi õpilaste loendi saamiseks. Seejärel saame kõigi õpilaste kuvamiseks kasutada a for loopi

>>> query = 'VALI * õpilastelt'
>>> kursor.täitma (päring)
>>> tulemus = kursor.fetchall ()
>>> tulemuse x jaoks:
... print (x)
('John', 1, 3, kuupäev.kuupäev (2020, 7, 4))

Näeme, et tagastatakse ainult ühe õpilase andmed, kuna meil on tabelis ainult üks õpilane. Piirangute täpsustamiseks saame MySQL-i käsku WHERE kasutada koos SELECT-lausega. Näiteks kui soovime tagastada ainult 4. klassi õpilased, võime kasutada järgmist päringut:

>>> query = 'VALI * õpilastelt WHERE hinne = 4'
>>> kursor.täitma (päring)
>>> tulemus = kursor.fetchall ()
>>> tulemuse x jaoks:
... print (x)

Ülaltoodud kood tõmbab ainult 4. klassi õpilasi.

Rida värskendamine

Selles jaotises näitame teile, kuidas MySQL-i tabelis õpilasandmeid Pythoni abil värskendada. Konkreetsete õpilaste andmete värskendamiseks kasutame MySQL-i WHERE ja SET-i lausetega UPDATE lauset. WHERE-lauset kasutatakse värskendatavate ridade määramiseks ja käsku SET kasutatakse värskenduseks kasutatavate väärtuste määratlemiseks.

>>> query = 'UUENDAGE õpilasi SET-nimi = "Märgi" WHERE id = 4'
>>> kursor.täitma (päring)
>>> sql_db.pühenduma ()

Nüüd proovime õpilase andmeid tabelist lugeda, kasutades SELECT-lauset.

>>> query = 'VALI * ÕPILASTELT KUS id = 4'
>>> kursor.täitma (päring)
>>> x kursori korral:
... print (x)
('Märgi', 4, 4, kuupäev.kuupäev (2020, 7, 15)

Nüüd näeme, et ID 4-ga õpilase nimi on muudetud Markiks.

Rea kustutamine

Rida saab tabelist kustutada, rakendades MySQL-is Pythoni abil käsu DELETE. Konkreetsete õpilaste tabelist kustutamiseks kasutame käsku KUSTUTA koos WHERE lausega.

>>> query = 'KUSTUTA õpilastelt, kus id = 2'
>>> kursor.täitma (päring)
>>> sql_db.pühenduma ()

Nüüd saame kõik õpilased tabelist tagastada, kasutades lauset SELECT.

>>> query = 'VALI * õpilastelt'
>>> kursor.täitma (päring)
>>> x kursori korral:
... print (x)
('John', 1, 3, kuupäev.kuupäev (2020, 7, 4))
('Johannes', 3, 3, kuupäev.kuupäev (2020, 7, 8)
('Märgi', 4, 4, kuupäev.kuupäev (2020, 7, 15))

Näeme, et tabel ei sisalda õpilast, kelle ID on 2, kuna oleme õpilase laualt eemaldanud.

Laua kukutamine

MySQL.pistikmoodulit saab kasutada ka laua kukutamiseks. DROP-lause saame MySQL-is käivitada meetodi execute () abil.

>>> kursor = sql_db.kursor ()
>>> query = 'LABI TABELI õpilased'
>>> kursor.täitma (päring)

Ülaltoodud kood kustutab Pythonis käivitamisel tabeli nimega õpilased.

See lõpetab meie arutelu SQL-i andmebaaside üle. Oleme teile näidanud, kuidas MySQL-i andmebaasi Pythoni abil erinevaid päringuid rakendada. Järgmisena rakendame CRUD-toiminguid NoSQL-i andmebaasile nimega MongoDB

CRUD-toimingute tegemine MongoDB-s

MongoDB-ga Pythoni abil suhtlemiseks peame esmalt installima pymongo, mis on Pythoni jaoks MongoDB-draiver.

[meiliga kaitstud]: ~ $ sudo pip install pymongo

või

[meiliga kaitstud]: ~ $ sudo pip3 install pymongo

Andmebaasi loomine

Saame ühenduda MongoDB-ga, kasutades MongoDB pymongo mooduli meetodit MongoClient (). Enne mis tahes toimingute tegemist peame ühenduse looma MongoDB andmebaasiga.

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

Pärast andmebaasiga ühenduse loomist saame järgmise rea luua uue andmebaasi nimega demo_db.

>>> db = klient ['demo_db']

Kui andmebaas on juba olemas, ignoreeritakse seda käsku.

Kollektsiooni loomine

Nüüd, kui oleme andmebaasi loonud, loome nimega andmebaasi õpilaste nimelise kogu.

>>> impordi pymongo
>>> klient = pymongo.MongoClient ('mongodb: // localhost: 27017 /')
>>> db = klient ['demo_db']
>>> col = db ['õpilased']

MÄRKUS. MongoDB loob kollektsiooni enne, kui sisestate sellesse andmed. Seega, kui proovite kollektsioonile juurde pääseda pärast ülaltoodud koodi käivitamist, leiate, et andmebaasis pole midagi.

Vooderdamata MySQL, me ei pea uue kogu loomisel skeemi määratlema, kuna MongoDB on mitte-relatsiooniline andmebaas.

Dokumendi sisestamine

Pärast kogu loomist saame kollektsiooni sisestada dokumendi. Kõigepealt peame määratlema sõnaraamatu ja seejärel saame kasutada meetodit insert_one () sõnastikus määratletud andmete sisestamiseks kogusse.

MÄRKUS. MongoDB loob igale dokumendile automaatselt ainulaadse '_id'; seetõttu pole meil vaja ID-d täpsustada.

>>> andmed =
... "nimi": "John",
… "Hinne": 3,
… "Dob": "2020-04-03"

>>> tulemus = kol.insert_one (andmed)

Ülaltoodud dokumendis sisestasime nime, palgaastme ja dob. Nüüd lisame õpilaste kogusse dokumendi, millel on vanusele vastav väli.

>>> andmed =
… "Nimi": "Märgi",
… "Hinne": 4,
… "Dob": "2020-04-09",
… "Vanus": 8

>>> tulemus = kol.insert_one (andmed)

Näeme, et see käsk ei viska viga. Kuna MongoDB on mitte-relatsiooniline andmebaas, võime dokumenti lisada kogu soovitud teabe.

Dokumentide hankimine

Selles jaotises kasutame andmebaasist andmete saamiseks meetodeid find () ja find_one (). Meetodil find () on kaks argumenti: esimest kasutatakse dokumentide filtreerimiseks ja teist kasutatakse tagastatava dokumendi väljade määratlemiseks. Näiteks kui soovime saada „John” ID, siis võime käivitada järgmise päringu:

>>> tulemus = kol.leidma ("nimi": "John", "_id": 1)
>>> tulemuse x jaoks:
... print (x)
'_id': ObjectId ('5f8f0514cb12c01f7420656e')

Teise võimalusena võime kõik dokumendid kogust hankida järgmise päringu abil:

>>> tulemus = kol.leidma ()
>>> tulemuse x jaoks:
... print (x)
'_id': ObjectId ('5f8f0514cb12c01f7420656e'), 'nimi': 'John', 'hinne': 3, 'dob': '2020-04-03'
'_id': ObjectId ('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'hinne': 4, 'dob': '2020-04-09', 'vanus': 8

Dokumentide värskendamine

Pymongo moodul pakub kollektsiooni dokumentide värskendamiseks meetodeid update_one () ja update_many (). Mõlemal meetodil on kaks argumenti: esimene määratleb, millist dokumenti muuta, ja teine ​​- uued väärtused. Nüüd muudame õpilase hinnet "Mark".

>>> query = "nimi": "Märgi"
>>> väärtus = "$ set": "hinne": 5
>>> kol.update_one (päring, väärtus)
>>> x jaoks kol.leidma ():
... print (x)
'_id': ObjectId ('5f8f0514cb12c01f7420656e'), 'nimi': 'John', 'hinne': 3, 'dob': '2020-04-03'
'_id': ObjectId ('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'hinne': 5, 'dob': '2020-04-09', 'vanus': 8

Dokumendi kustutamine

Pythoni pymongo moodulil on kaks meetodit, s.t.e., delete_one () ja delete_many (), dokumentide kustutamiseks. Mõlemal meetodil võetakse argument, mis valib dokumendi kustutamiseks. Järgmise koodiga kustutame õpilase nimega 'John'.

>>> query = "nimi": "John"
>>> kol.kustuta_ üks (päring)
>>> x jaoks kol.leidma ():
... print (x)
'_id': ObjectId ('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'id': 2, 'hinne': 5, 'dob': '2020-04-09', 'vanus': 8

Kogu kukutamine

Kollektsiooni saab MongoDB-sse visata, kasutades Pythoni pymongo mooduli drop () meetodit. Esiteks peame ühenduse looma andmebaasiga; seejärel valime andmebaasi, mis sisaldab kogu, mille soovite eemaldada. Pärast andmebaasist kollektsiooni valimist saame kollektsiooni drop () meetodi abil eemaldada. Järgmine kood loobib õpilased.

>>> impordi pymongo
>>> klient = pymongo.MongoClient ('mongodb: // localhost: 27017 /')
>>> db = klient ['demo_db']
>>> col = db ['õpilased']
>>> kol.tilk ()

Järeldus

Veebirakenduse koostamiseks on andmebaaside tundmine hädavajalik. Peaaegu igal programmeerimiskeelel on taustaprogrammi veebiarenduseks raamistikud ja teegid. Pythoni saab kasutada taustaprogrammi veebiarenduses ja seega saame Pythoni taustaprogrammidega töötades Pythoni abil suhelda andmebaasidega. Selles artiklis näitasime teile, kuidas suhelda MongoDB ja MySQL andmebaasidega, kasutades Pythonis kirjutatud lihtsaid CRUD-toiminguid.

Lahing Wesnothi eest 1.13.6 Areng vabastati
Lahing Wesnothi eest 1.13.6 ilmus eelmisel kuul, on 1-s kuues arendusversioon.13.x-seeria ja see pakub mitmeid täiustusi, eelkõige kasutajaliidese ja ...
League of Legendsi installimine Ubuntu 14-le.04
Kui olete League of Legends fänn, siis on see teile võimalus proovida League of Legendsit. Pange tähele, et LOL-i toetab PlayOnLinux, kui olete Linuxi...
Installige uusim OpenRA strateegiamäng Ubuntu Linuxi
OpenRA on tasuta / tasuta reaalajas strateegiamängumootor, mis loob uuesti Westwoodi varased mängud nagu klassikaline Command & Conquer: Red Alert. Ja...