Pytonorm

CRUD-operationer till SQL- och NoSQL-databaser med Python

CRUD-operationer till SQL- och NoSQL-databaser med Python
Det finns två huvudtyper av databaser som kan användas med en applikation: relationsdatabaser (SQL) och icke-relationsdatabaser (NoSQL). Båda används ofta men att välja en beror på vilken typ av data som kommer att lagras. Det finns fyra grundläggande operationer som kan utföras på databaser: skapa, läsa, uppdatera och ta bort (CRUD).

Vi kan interagera med databaser med vilket programmeringsspråk som helst, eller vi kan använda ett program som låter oss interagera med databasen med hjälp av ett GUI. I den här artikeln kommer vi att diskutera databaser och visa dig hur du interagerar med dem med hjälp av Python-programmeringsspråket.

Relationella databaser (SQL)

Relationsdatabaser (SQL) skiljer sig från icke-relationsdatabaser (NoSQL) när det gäller schema. Ett schema är en mall som definierar strukturen för de data du ska lagra. I relationsdatabaser skapar vi tabeller för att lagra data. Schemat för en tabell definieras när tabellen skapas. Om vi ​​till exempel vill lagra data om studenter i en relationsdatabas skapar vi en tabell över studenter och definierar schemat för tabellen, som kan innehålla namn, registreringsnummer, betyg osv. av varje elev. Efter att du har skapat schemat lagrar vi data i raderna i tabellen. Det är viktigt att notera att vi inte kan lagra data som inte definieras i schemat. I det här exemplet kan betyget som en student fick på ett prov inte lagras i tabellen eftersom vi inte har definierat en kolumn för dessa data i schemat.

Följande lista innehåller några populära relationsdatabaser:

Icke-relationsdatabaser (NoSQL)

Som diskuterats ovan har icke-relationsdatabaser inget definierat schema. Icke-relationsdatabaser har samlingar istället för tabeller, och dessa samlingar innehåller dokument som motsvarar raderna i en relationsdatabas. Om vi ​​till exempel vill skapa en icke-relationell databas för att lagra studentdata kan vi skapa en samling användare och i den här samlingen lagrar vi ett dokument för varje elev. Dessa dokument har inget definierat schema och du kan lagra vad du vill för varje elev.

Utföra CRUD-operationer i MySQL

Nu visar vi dig hur du interagerar med MySQL med hjälp av Python.

Installerar MySQL-drivrutin för Python

För att interagera med MySQL med Python måste vi först installera MySQL-drivrutinen i Python.

[e-postskyddad]: ~ $ sudo pip3 installera mysql-connector-python

eller

[e-postskyddad]: ~ $ sudo pip installera mysql-connector-python

Skapa en databas

Innan vi skapar en databas måste vi ansluta till MySQL-servern med Python. MySQL.connector module erbjuder connect () -metoden för att skapa en anslutning till MySQL med Python.

>>> importera mysql.kontakt
// Ersätt med din egen IP- och serverinformation
>>> sql = mysql.kontakt.ansluta(
... host = 'localhost',
... user = 'root',
... lösenord = '12345'
...)
>>> tryck (kvm)

Det här meddelandet visar att vi lyckats skapa en anslutning till en MySQL-databas med Python. Nu kör vi en SQL-fråga på MySQL-servern med metoden execute () från mysql.anslutningsmodul.

>>> markör = sql.markör ()
>>> fråga = 'CREATE DATABASE demo_db'
>>> markören.exekvera (fråga)

Ovanstående kod skapar en databas med namnet demo_db i MySQL.

Skapa en tabell

Nu när vi har skapat en databas skapar vi en ny tabell med namnet studenter. För att skapa en tabell måste vi ansluta till databasen.

>>> sql_db = mysql.kontakt.ansluta(
... host = 'localhost',
... user = 'root',
... lösenord = '12345',
... databas = 'demo_db'
...)

Efter anslutning till databasen använder vi metoden execute () för att köra en SQL-fråga för att skapa en tabell med ett schema.

>>> fråga = "CREATE TABLE students (name VARCHAR (64), id INT, grade INT, dob DATE)";
>>> markören.exekvera (fråga);

Kommandot ovan skapar en tabell med namnet studenter i demo_db-databasen; vi kan bara infoga ett namn, id, betyg och födelsedatum i tabellen, enligt definitionen i schemat.

Infoga rader i en tabell

Nu när vi har skapat en tabell infogar vi en student i den här tabellen. Vi skapar en fråga och använder sedan metoden execute () för att köra frågan på MySQL-servern med Python.

>>> fråga = 'INSÄTTA I studenter (namn, id, betyg, dob) VÄRDEN ("John", 1, 3, "2020-7-04")'
>>> markören.exekvera (fråga)
>>> sql_db.begå()

Denna fråga lägger till en student med de data som definierats i frågan i tabellen. Vi kan lägga till fler elever i tabellen på samma sätt.

OBS! Ändringar tillämpas endast på databasen om du kör sql_db.commit () efter tillämpning av ändringar.

Välja rader från en tabell

SELECT-satsen i MySQL används för att returnera data från en tabell. Vi använder metoden execute () för att köra en fråga och sedan använder vi metoden fetchall () för att få en lista över alla studenter. Sedan kan vi använda en for-loop för att visa alla elever

>>> fråga = 'VÄLJ * FRÅN studenter'
>>> markören.exekvera (fråga)
>>> resultat = markör.fetchall ()
>>> för x i resultat:
... skriv ut (x)
('John', 1, 3, datetime.datum (2020, 7, 4))

Vi kan se att endast data för en enskild studentdata returneras, eftersom vi bara har en elev i tabellen. Vi kan använda WHERE-satsen i MySQL med SELECT-satsen för att ange begränsningar. Om vi ​​till exempel bara vill returnera eleverna i klass 4 kan vi använda följande fråga:

>>> fråga = 'VÄLJ * FRÅN elever VAR betyg = 4'
>>> markören.exekvera (fråga)
>>> resultat = markör.fetchall ()
>>> för x i resultat:
... skriv ut (x)

Ovanstående kod hämtar bara eleverna från årskurs 4.

Uppdaterar en rad

I det här avsnittet visar vi dig hur du uppdaterar studentdata i en MySQL-tabell med Python. Vi kommer att använda UPDATE-uttalandet med WHERE- och SET-uttalandena i MySQL för att uppdatera data för specifika studenter. WHERE-satsen används för att bestämma vilka rader som ska uppdateras och SET-satsen används för att definiera de värden som används för uppdateringen.

>>> fråga = 'UPPDATERA studenter SET-namn = "Markera" VAR id = 4'
>>> markören.exekvera (fråga)
>>> sql_db.begå()

Nu ska vi försöka läsa studentdata från tabellen med hjälp av SELECT-uttalandet.

>>> fråga = 'VÄLJ * FRÅN studenter VAR id = 4'
>>> markören.exekvera (fråga)
>>> för x i markören:
... skriv ut (x)
('Mark', 4, 4, datetime.datum (2020, 7, 15))

Nu kan vi se att namnet på studenten med id 4 har ändrats till Mark.

Radera en rad

Vi kan ta bort en rad från tabellen genom att använda DELETE-uttalandet i MySQL med Python. Vi använder ett DELETE-uttalande med ett WHERE-uttalande för att ta bort specifika elever från tabellen.

>>> fråga = 'RADERA FRÅN studenter VAR id = 2'
>>> markören.exekvera (fråga)
>>> sql_db.begå()

Nu kan vi returnera alla elever från tabellen med SELECT-uttalandet.

>>> fråga = 'VÄLJ * FRÅN studenter'
>>> markören.exekvera (fråga)
>>> för x i markören:
... skriv ut (x)
('John', 1, 3, datetime.datum (2020, 7, 4))
('John', 3, 3, datetime.datum (2020, 7, 8))
('Mark', 4, 4, datetime.datum (2020, 7, 15))

Vi kan se att tabellen inte innehåller en elev med id 2, eftersom vi har tagit bort studenten från tabellen.

Släppa ett bord

MySQL.anslutningsmodul kan också användas för att släppa ett bord. Vi kan utföra ett DROP-uttalande i MySQL genom att använda metoden execute ().

>>> markör = sql_db.markör ()
>>> fråga = 'DROP TABLE students'
>>> markören.exekvera (fråga)

Ovanstående kod tar bort tabellen med namnet studenter när de körs i Python.

Det avslutar vår diskussion om SQL-databaser. Vi har visat dig hur du tillämpar olika frågor i MySQL-databasen med Python. Därefter kommer vi att tillämpa CRUD-operationer på en NoSQL-databas som heter MongoDB

Utföra CRUD-operationer i MongoDB

För att interagera med MongoDB med Python måste vi först installera pymongo, som är en MongoDB-drivrutin för Python.

[e-postskyddad]: ~ $ sudo pip install pymongo

eller

[e-postskyddad]: ~ $ sudo pip3 installera pymongo

Skapa en databas

Vi kan ansluta till MongoDB med hjälp av MongoClient () -metoden i pymongo-modulen i MongoDB. Innan vi utför några åtgärder måste vi ansluta till MongoDB-databasen.

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

Efter att ha anslutit till datafasen kan vi köra följande rad för att skapa en ny databas med namnet demo_db.

>>> db = klient ['demo_db']

Om databasen redan finns ignoreras detta kommando.

Skapa en samling

Nu när vi har skapat en databas kommer vi att skapa en samling med namnet studenter i namnet på databasen.

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

OBS! MongoDB skapar inte en samling förrän du anger data i den. Därför, om du försöker komma åt samlingen efter att ha kört ovanstående kod, kommer du att upptäcka att det inte finns något i databasen.

Ofodrad MySQL, vi behöver inte definiera ett schema när vi skapar en ny samling, eftersom MongoDB är en icke-relationsdatabas.

Infoga ett dokument

Efter att ha skapat en samling kan vi infoga ett dokument i samlingen. Först måste vi definiera en ordlista, och sedan kan vi använda metoden insert_one () för att infoga de data som definierats i ordboken i samlingen.

OBS: MongoDB skapar automatiskt ett unikt '_id' för varje dokument. därför behöver vi inte ange ett id.

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

I dokumentet ovan infogade vi namn, betyg och dob. Nu ska vi infoga ett dokument i studentsamlingen som har ett fält för ålder.

>>> data =
… "Name": "Markera",
... "betyg": 4,
… "Dob": "2020-04-09",
... "ålder": 8
...
>>> resultat = kol.insert_one (data)

Vi kan se att det här kommandot inte ger något fel. Eftersom MongoDB är en icke-relationsdatabas kan vi lägga till all information vi vill ha i dokumentet.

Få dokument

I det här avsnittet använder vi metoderna find () och find_one () för att hämta data från databasen. Metoden find () tar två argument: den första används för att filtrera dokument och den andra används för att definiera fälten i dokumentet vi vill returnera. Om vi ​​till exempel vill få id: t John, kan vi köra följande fråga:

>>> resultat = kol.hitta ("name": "John", "_id": 1)
>>> för x i resultat:
... skriv ut (x)
'_id': ObjectId ('5f8f0514cb12c01f7420656e')

Alternativt kan vi hämta alla dokument från samlingen genom att använda följande fråga:

>>> resultat = kol.hitta()
>>> för x i resultat:
... skriv ut (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

Uppdaterar dokument

Pymongo-modulen erbjuder metoderna update_one () och update_many () för att uppdatera dokumenten i en samling. Båda metoderna tar två argument: den första definierar vilket dokument som ska ändras och den andra definierar de nya värdena. Nu kommer vi att ändra betyg på studenten "Mark".

>>> fråga = "name": "Markera"
>>> värde = "$ set": "betyg": 5
>>> kol.update_one (fråga, värde)
>>> för x i kol.hitta():
... skriv ut (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

Ta bort ett dokument

Pymongomodulen i Python har två metoder, jag.e., delete_one () och delete_many (), för att radera dokument. Båda metoderna tar ett argument som väljer det dokument som ska tas bort. Med följande kod raderar vi en elev som heter 'John'.

>>> fråga = "name": "John"
>>> kol.delete_one (fråga)
>>> för x i kol.hitta():
... skriv ut (x)
'_id': ObjectId ('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'id': 2, 'grade': 5, 'dob': '2020-04-09', 'age': 8

Släppa en samling

Vi kan släppa en samling i MongoDB med hjälp av drop () -metoden för pymongo-modulen i Python. Först måste vi ansluta till databasen; sedan väljer vi databasen som innehåller samlingen vi vill ta bort. Efter att ha valt samlingen från databasen kan vi ta bort samlingen med hjälp av metoden drop (). Följande kod släpper eleverna.

>>> importera pymongo
>>> klient = pymongo.MongoClient ('mongodb: // localhost: 27017 /')
>>> db = klient ['demo_db']
>>> col = db ['studenter']
>>> kol.släppa()

Slutsats

Kunskap om databaser är viktigt om du vill skapa en webbapplikation. Nästan varje programmeringsspråk har ramar och bibliotek för webbutveckling av backend. Python kan användas i webbutveckling av backend, och så kan vi interagera med databaser med Python medan vi arbetar med Python backend-ramar. I den här artikeln visade vi dig hur du interagerar med MongoDB- och MySQL-databaser genom att använda enkla CRUD-operationer skrivna i Python.

Hur man visar OSD-överlägg i helskärms Linux-appar och -spel
Att spela helskärmsspel eller använda appar i distraktionsfritt helskärmsläge kan avskärma dig från relevant systeminformation som syns i en panel ell...
Topp 5 spelinspelningskort
Vi har alla sett och älskat streaming av spel på YouTube. PewDiePie, Jakesepticye och Markiplier är bara några av de bästa spelarna som har tjänat mil...
Hur man utvecklar ett spel på Linux
För ett decennium sedan skulle inte många Linux-användare förutsäga att deras favoritoperativsystem en dag skulle vara en populär spelplattform för ko...