Python

CRUD-operationer til SQL- og NoSQL-databaser ved hjælp af Python

CRUD-operationer til SQL- og NoSQL-databaser ved hjælp af Python
Der er to hovedtyper af databaser, der kan bruges med en applikation: relationsdatabaser (SQL) og ikke-relationsdatabaser (NoSQL). Begge er meget udbredt, men valg af en afhænger af typen af ​​data, der skal lagres. Der er fire grundlæggende operationer, der kan udføres på databaser: Opret, læs, opdater og slet (CRUD).

Vi kan interagere med databaser ved hjælp af ethvert programmeringssprog, eller vi kan bruge et softwareprogram, der giver os mulighed for at interagere med databasen ved hjælp af en GUI. I denne artikel vil vi diskutere databaser og vise dig, hvordan du interagerer med dem ved hjælp af Python-programmeringssprog.

Relationelle databaser (SQL)

Relationsdatabaser (SQL) adskiller sig fra ikke-relationsdatabaser (NoSQL) med hensyn til skema. Et skema er en skabelon, der definerer strukturen på de data, du skal gemme. I relationsdatabaser opretter vi tabeller til lagring af data. Skemaet for en tabel defineres, når tabellen oprettes. For eksempel, hvis vi vil gemme data om studerende i en relationsdatabase, så opretter vi en tabel over studerende og definerer skemaet for tabellen, som kan omfatte navn, registreringsnummer, karakter osv. af hver elev. Efter oprettelse af skemaet gemmer vi dataene i rækkerne i tabellen. Det er vigtigt at bemærke, at vi ikke kan gemme data, der ikke er defineret i skemaet. I dette eksempel kan karakteren, som en studerende modtog på en eksamen, ikke gemmes i tabellen, fordi vi ikke har defineret en kolonne for disse data i skemaet.

Følgende liste indeholder nogle populære relationsdatabaser:

Ikke-relationelle databaser (NoSQL)

Som diskuteret ovenfor har ikke-relationelle databaser ikke et defineret skema. Ikke-relationelle databaser har samlinger i stedet for tabeller, og disse samlinger indeholder dokumenter, der svarer til rækkerne i en relationsdatabase. For eksempel, hvis vi ønsker at oprette en ikke-relationel database til at gemme elevdata, kan vi oprette en samling af brugere, og i denne samling gemmer vi et dokument til hver elev. Disse dokumenter har ikke et defineret skema, og du kan gemme alt, hvad du vil have for hver elev.

Udførelse af CRUD-operationer i MySQL

Nu viser vi dig, hvordan du interagerer med MySQL ved hjælp af Python.

Installation af MySQL-driver til Python

For at interagere med MySQL ved hjælp af Python skal vi først installere MySQL-driveren i Python.

[e-mail-beskyttet]: ~ $ sudo pip3 installer mysql-connector-python

eller

[email protected]: ~ $ sudo pip install mysql-connector-python

Oprettelse af en database

Før vi opretter en database, skal vi oprette forbindelse til MySQL-server ved hjælp af Python. Mysql.connector-modul tilbyder connect () -metoden til at hjælpe med at etablere en forbindelse til MySQL ved hjælp af Python.

>>> import mysql.stik
// Erstat med dine egne IP- og serverlegitimationsoplysninger
>>> sql = mysql.stik.Opret forbindelse(
... vært = 'localhost',
... bruger = 'root',
… Password = '12345'
...)
>>> print (kvl)

Denne meddelelse viser, at vi med succes har oprettet en forbindelse til en MySQL-database ved hjælp af Python. Nu kører vi en SQL-forespørgsel på MySQL-serveren ved hjælp af execute () -metoden fra mysql.stikmodul.

>>> markør = sql.cursoren()
>>> forespørgsel = 'CREATE DATABASE demo_db'
>>> markør.udføre (forespørgsel)

Ovenstående kode opretter en database med navnet demo_db i MySQL.

Oprettelse af en tabel

Nu hvor vi har oprettet en database, opretter vi en ny tabel med navnet studerende. For at oprette en tabel skal vi oprette forbindelse til databasen.

>>> sql_db = mysql.stik.Opret forbindelse(
... vært = 'localhost',
... bruger = 'root',
… Adgangskode = '12345',
... database = 'demo_db'
...)

Efter oprettelse af forbindelse til databasen bruger vi metoden execute () til at køre en SQL-forespørgsel for at oprette en tabel med et skema.

>>> forespørgsel = "CREATE TABLE students (name VARCHAR (64), id INT, grade INT, dob DATE)";
>>> markør.udføre (forespørgsel)

Ovenstående kommando opretter en tabel, der hedder studerende i demo_db-databasen; Vi kan kun indsætte et navn, id, lønklasse og fødselsdato i tabellen som defineret i skemaet.

Indsættelse af rækker i en tabel

Nu hvor vi har oprettet en tabel, indsætter vi en elev i denne tabel. Vi opretter en forespørgsel og bruger derefter metoden execute () til at køre forespørgslen på MySQL-serveren ved hjælp af Python.

>>> forespørgsel = 'INDSÆT I studerende (navn, id, lønklasse, dob) VÆRDIER (“John”, 1, 3, “2020-7-04”)'
>>> markør.udføre (forespørgsel)
>>> sql_db.begå()

Denne forespørgsel tilføjer en studerende med de data, der er defineret i forespørgslen, i tabellen. Vi kan tilføje flere studerende til tabellen på samme måde.

BEMÆRK: Ændringer anvendes kun i databasen, hvis du kører sql_db.commit () efter anvendelse af ændringer.

Valg af rækker fra en tabel

SELECT-sætningen i MySQL bruges til at returnere data fra en tabel. Vi bruger metoden execute () til at køre en forespørgsel, og derefter bruger vi metoden fetchall () til at få en liste over alle studerende. Derefter kan vi bruge en for-loop til at vise alle eleverne

>>> forespørgsel = 'VÆLG * FRA studerende'
>>> markør.udføre (forespørgsel)
>>> resultat = markør.fetchall ()
>>> for x i resultat:
... udskriv (x)
('John', 1, 3, datetime.dato (2020, 7, 4))

Vi kan se, at kun data for en enkelt elevdata returneres, da vi kun har en elev i tabellen. Vi kan bruge WHERE-sætningen i MySQL med SELECT-sætningen til at specificere begrænsninger. For eksempel, hvis vi kun vil returnere de studerende i klasse 4, kan vi bruge følgende forespørgsel:

>>> forespørgsel = 'VÆLG * FRA studerende HVOR lønklasse = 4'
>>> markør.udføre (forespørgsel)
>>> resultat = markør.fetchall ()
>>> for x i resultat:
... udskriv (x)

Ovenstående kode henter kun eleverne fra klasse 4.

Opdatering af en række

I dette afsnit viser vi dig, hvordan du opdaterer elevdata i en MySQL-tabel ved hjælp af Python. Vi bruger UPDATE-sætningen med WHERE- og SET-udsagnene i MySQL til at opdatere dataene for specifikke studerende. WHERE-sætningen bruges til at bestemme, hvilke rækker der skal opdateres, og SET-sætningen bruges til at definere de værdier, der bruges til opdateringen.

>>> forespørgsel = 'OPDATER studerende SET navn = "Marker" WHERE id = 4'
>>> markør.udføre (forespørgsel)
>>> sql_db.begå()

Nu vil vi forsøge at læse elevdata fra tabellen ved hjælp af SELECT-sætningen.

>>> forespørgsel = 'VÆLG * FRA studerende HVOR id = 4'
>>> markør.udføre (forespørgsel)
>>> for x i markør:
... udskriv (x)
('Mark', 4, 4, datetime.dato (2020, 7, 15))

Nu kan vi se, at navnet på den studerende med id 4 er blevet ændret til Mark.

Sletning af en række

Vi kan slette en række fra tabellen ved at anvende DELETE-sætningen i MySQL ved hjælp af Python. Vi bruger en DELETE-sætning med en WHERE-sætning til at slette specifikke studerende fra tabellen.

>>> forespørgsel = 'SLET FRA studerende WHERE id = 2'
>>> markør.udføre (forespørgsel)
>>> sql_db.begå()

Nu kan vi returnere alle eleverne fra tabellen ved hjælp af SELECT-sætningen.

>>> forespørgsel = 'VÆLG * FRA studerende'
>>> markør.udføre (forespørgsel)
>>> for x i markør:
... udskriv (x)
('John', 1, 3, datetime.dato (2020, 7, 4))
('John', 3, 3, datetime.dato (2020, 7, 8))
('Mark', 4, 4, datetime.dato (2020, 7, 15))

Vi kan se, at tabellen ikke indeholder en elev med id 2, da vi har fjernet eleven fra bordet.

At tabe et bord

Mysql.stikmodul kan også bruges til at tabe et bord. Vi kan udføre en DROP-erklæring i MySQL ved hjælp af metoden execute ().

>>> markør = sql_db.cursoren()
>>> forespørgsel = 'DROP TABLE studerende'
>>> markør.udføre (forespørgsel)

Ovenstående kode sletter tabellen med de studerende, når de udføres i Python.

Det afslutter vores diskussion af SQL-databaser. Vi har vist dig, hvordan du anvender forskellige forespørgsler til MySQL-databasen ved hjælp af Python. Dernæst anvender vi CRUD-operationer til en NoSQL-database kaldet MongoDB

Udførelse af CRUD-operationer i MongoDB

For at interagere med MongoDB ved hjælp af Python, skal vi først installere pymongo, som er en MongoDB-driver til Python.

[e-mail-beskyttet]: ~ $ sudo pip install pymongo

eller

[e-mailbeskyttet]: ~ $ sudo pip3 installer pymongo

Oprettelse af en database

Vi kan oprette forbindelse til MongoDB ved hjælp af MongoClient () -metoden i pymongo-modulet i MongoDB. Før vi udfører handlinger, skal vi oprette forbindelse til MongoDB-databasen.

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

Efter tilslutning til datakassen kan vi udføre følgende linje for at oprette en ny database med navnet demo_db.

>>> db = klient ['demo_db']

Hvis databasen allerede findes, ignoreres denne kommando.

Oprettelse af en samling

Nu hvor vi har oprettet en database, opretter vi en samling, der hedder studerende i den navngivne database.

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

BEMÆRK: MongoDB opretter ikke en samling, før du indtaster data i den. Derfor, hvis du forsøger at få adgang til samlingen efter at have kørt ovenstående kode, vil du opdage, at der ikke er noget i databasen.

Uforet MySQL, vi behøver ikke definere et skema, når vi opretter en ny samling, da MongoDB er en ikke-relationel database.

Indsættelse af et dokument

Efter oprettelse af en samling kan vi indsætte et dokument inde i samlingen. Først skal vi definere en ordbog, og derefter kan vi bruge metoden insert_one () til at indsætte de data, der er defineret i ordbogen, i samlingen.

BEMÆRK: MongoDB opretter automatisk et unikt '_id' for hvert dokument; Derfor behøver vi ikke angive et id.

>>> data =
… "Name": "John",
... "karakter": 3,
… "Dob": "2020-04-03"
...
>>> resultat = kol.insert_one (data)

I ovenstående dokument indsatte vi navn, lønklasse og dob. Nu indsætter vi et dokument i elevernes samling, der har et felt for alder.

>>> data =
… "Name": "Marker",
... "karakter": 4,
… "Dob": "2020-04-09",
... "alder": 8
...
>>> resultat = kol.insert_one (data)

Vi kan se, at denne kommando ikke kaster en fejl. Da MongoDB er en ikke-relationel database, kan vi tilføje de oplysninger, vi ønsker i dokumentet.

Få dokumenter

I dette afsnit bruger vi find () og find_one () -metoderne til at hente data fra databasen. Metoden find () tager to argumenter: den første bruges til at filtrere dokumenter, og den anden bruges til at definere felterne i det dokument, vi vil returnere. For eksempel, hvis vi ønsker at få id'et til 'John', så kan vi køre følgende forespørgsel:

>>> resultat = kol.find ("name": "John", "_id": 1)
>>> for x i resultat:
... udskriv (x)
'_id': ObjectId ('5f8f0514cb12c01f7420656e')

Alternativt kan vi hente alle dokumenter fra samlingen ved hjælp af følgende forespørgsel:

>>> resultat = kol.finde()
>>> for x i resultat:
... udskriv (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

Opdatering af dokumenter

Pymongo-modulet tilbyder metoderne update_one () og update_many () til opdatering af dokumenter i en samling. Begge metoder tager to argumenter: den første definerer hvilket dokument der skal ændres og den anden definerer de nye værdier. Nu ændrer vi karakteren for den studerende 'Mark'.

>>> forespørgsel = "name": "Marker"
>>> værdi = "$ set": "grade": 5
>>> kol.update_one (forespørgsel, værdi)
>>> for x i kol.finde():
... udskriv (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

Sletning af et dokument

Pymongo-modulet i Python har to metoder, dvs.e., delete_one () og delete_many () til sletning af dokumenter. Begge metoder tager et argument, der vælger det dokument, der skal slettes. Med følgende kode sletter vi en elev ved navn 'John'.

>>> forespørgsel = "name": "John"
>>> kol.delete_one (forespørgsel)
>>> for x i kol.finde():
... udskriv (x)
'_id': ObjectId ('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'id': 2, 'grade': 5, 'dob': '2020-04-09', 'age': 8

Aflevering af en samling

Vi kan droppe en samling i MongoDB ved hjælp af drop () -metoden i pymongo-modulet i Python. Først skal vi oprette forbindelse til databasen; derefter vælger vi den database, der indeholder den samling, vi vil fjerne. Når vi har valgt samlingen fra databasen, kan vi fjerne samlingen ved hjælp af drop () -metoden. Den følgende kode vil slippe eleverne.

>>> importer pymongo
>>> klient = pymongo.MongoClient ('mongodb: // localhost: 27017 /')
>>> db = klient ['demo_db']
>>> col = db ['studerende']
>>> kol.dråbe()

Konklusion

Kendskab til databaser er vigtig, hvis du vil oprette en webapplikation. Næsten hvert programmeringssprog har rammer og biblioteker til backend webudvikling. Python kan bruges i backend webudvikling, og så kan vi interagere med databaser ved hjælp af Python, mens vi arbejder med Python backend rammer. I denne artikel viste vi dig, hvordan du interagerer med MongoDB og MySQL-databaser ved hjælp af enkle CRUD-operationer skrevet i Python.

Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har for nylig læst om Microsoft Sculpt Touch trådløs mus og besluttede at købe den. Efter at have brugt det et stykke tid besluttede jeg at dele m...
Mus AppyMouse pegefelt på skærmen og musemarkør til Windows-tablets
AppyMouse pegefelt på skærmen og musemarkør til Windows-tablets
Tabletbrugere savner ofte musemarkøren, især når de er vante til at bruge bærbare computere. Touchscreen-smartphones og tablets har mange fordele, og ...
Mus Midterste museknap fungerer ikke i Windows 10
Midterste museknap fungerer ikke i Windows 10
Det midterste museknap hjælper dig med at rulle gennem lange websider og skærme med en masse data. Hvis det stopper, vil du ende med at bruge tastatur...