sql >> Databasteknik >  >> NoSQL >> MongoDB

Python-databasprogrammering med MongoDB för nybörjare

Syftet med denna Python-databasprogrammeringshandledning är att ge en försiktig introduktion till att använda en NoSQL-databas som ett datalager för Python-applikationer. Den avsedda målgruppen är utvecklare på nybörjarnivå eller utvecklare på medelnivå som är bekanta med att använda SQL-orienterade databaser som Oracle, SQL Server eller MySQL. Demonstrationerna i den här artikeln kommer att vara parallella med demonstrationerna som används i andra SQL Database-programmeringsartiklar som involverar Python, såsom Python Database Programmering med SQL Express för nybörjare, och kommer på samma sätt att använda Python 3.

Vad är NoSQL?

Pythons popularitet fortsätter att växa i popularitet delvis på grund av den lätthet som den kan arbeta med ny teknik. En sådan "ny" teknik är användningen av "NoSQL"-databaser. En av de mest tilltalande egenskaperna hos dessa typer av databaser är det faktum att det, som namnet antyder, i allmänhet inte finns något ytterligare frågespråk, såsom en av till synes många varianter av SQL, som måste läras in för att kunna arbeta med databasen ur en programmatisk synvinkel. Detta underlättar applikationsutvecklingen avsevärt eftersom programmeringsspråkets inbyggda datastrukturer och dess syntax är det de facto "frågespråk", förutsatt att lämpliga moduler naturligtvis läggs till i utvecklingsmiljön.

NoSQL-databaser, förutom oftast utan att använda ett frågespråk, strukturera även data internt på ett sätt som är väsentligt annorlunda mot SQL-databaser. En utvecklare som är mer van vid SQL-programmeringsparadigmet måste anpassa sitt tänkande för att matcha hur NoSQL gör affärer. Om vi ​​går längre under huven, delar designen av NoSQL-databasservrar samma olikhet. NoSQL-databasservrar är mer fokuserade på hastighet och skalbarhet med "eventuell konsekvens", till skillnad från SQL-databasservrar som är mer fokuserade på omedelbar konsekvens.

Vad är MongoDB?

MongoDB är en av många "NoSQL"-databaser. Liksom MariaDB använder den sitt eget användarnamn och lösenordssystem för åtkomsthantering. MongoDB erbjuder, förutom att erbjuda gratis nedladdningsbar servermjukvara, även ett gratis molnbaserat introduktionsalternativ (via dess Atlas erbjuder) vilket minskar behovet av att ladda ner och konfigurera en instans. Demonstrationerna i denna databasprogrammeringshandledning kommer att använda den molnbaserade gratisinstansen av MongoDB.

Som är fallet med Python och vilken databasserver som helst, en extra databasdrivrutinmodul, nämligen PyMongo , krävs för att Python ska kunna kommunicera med MongoDB-servern och eventuella databaser som finns i den. Dessutom, precis som vilken databasserver som helst, tillhandahåller MongoDB ett kompletterande hanteringsverktyg som heter MongoDB Shell . Demonstrationerna i den här artikeln kommer att använda en MongoDB-databas skapad med det här verktyget. Observera att MongoDB Shell är ett av många hanteringsverktyg som finns för MongoDB.

  • Hämta MongoDB Community Server
  • MongoDB Zero-Cost molnbaserat introduktionserbjudande
  • Hämta MongoDB Shell

Observera att länkarna som publicerades var aktiva när den här artikeln skrevs. Om länkarna inte längre är aktiva kan dessa produkter laddas ner via ens föredragna sökmotor.

Hur man konfigurerar MongoDB för mjukvaruutveckling

MongoDBs Zero-Cost Moln-baserade introduktionserbjudande konfigurationen är helt webbaserad. Det kan enkelt kopplas till ens Google-konto för enkel inloggning. Tänk bara på följande varningar:

  • Välj en datavärdtjänst som är fysiskt i närheten. Värdtjänsten som visas i den här artikeln i Virginia kanske inte är idealisk för någon som är långt borta därifrån.
  • Lösenordet som används för att ansluta ett program till databasservern måste sparas säkert eftersom det inte kan återställas om det tappas bort. Den kan bara återställas.
  • Klusternamnet kan inte ändras när det väl har angetts. Demonstrationerna i den här artikeln kommer att använda ett kluster som heter Cluster0 .
  • Se till att alla IP-adresser från vilka alla program, inklusive MongoDB Shell, är konfigurerade i säkerhetsinställningarna.
  • MongoDB Shell kanske inte har något installationsprogram. Se alltid till att inkludera sökvägen till mappen som innehåller denna applikation i sökvägen till operativsystemet.

Hur man ansluter till MongoDB-databasservern

Efter att ha lyckats konfigurera det molnbaserade MongoDB-klustret, kommer det att vara nödvändigt att notera den specifika anslutningssträngen som används för att ansluta till den. Strängarna nedan kan också hämtas genom att logga in på MongoDB Atlas Site och klicka på Anslut knapp:

Figur 1 – MongoDB Atlas Dashboard med anslutningsknappen markerad

Observera att inställningar som databasens användarnamn och lösenord och tillåtna IP-intervall för anslutning kan ställas in i länkarna Databas Access och Network Access.

Nedan finns två anslutningsexempel. Den första är för MongoDB Shell.

MongoDB:Ansluter från kommandoraden

Öppna en Windows Kommandotolk förklaras i Python-databasprogrammering med SQL Express för nybörjare under Öppna kommandotolksfönster rubrik.

Figur 2 – Ansluter via kommandoraden till MongoDB Shell

Observera att kommandot för att öppna MongoDB-skalet varierar beroende på operativsystem. Klusternamnet kan variera, och de markerade parametrarna i kommandot måste ändras till detaljerna för den molnbaserade MongoDB-inställningen. I Windows kallas det här kommandot mongosh . Observera att databasnamnet RazorDemo ingår nedan, eftersom det är databasen som kommer att användas i demonstrationerna i denna programmeringshandledning. Kommandot accepterar också en extra parameter för lösenordet som visas nedan:

Figur 3 – Autentisering med lösenordet på kommandoraden.

Observera att även om det är bekvämt för utvecklingsändamål att använda lösenordet på kommandoraden, i motsats till att behöva skriva in det varje gång, var uppmärksam på att lösenordet dyker upp i historiken för tidigare utförda kommandon. Det här alternativet ska inte användas i utvecklingsmiljöer där andra användare kan komma åt ens tidigare kommandohistorik.

Förhoppningsvis trodde ingen heller att jag faktiskt skulle använda 123456 som ett lösenord, eller hur?

Figur 4 – Kollar bara 🙂

Observera att ^ i båda exemplen ovan tecken används som en radfortsättningssymbol i Windows kommandotolk.

Ansluter MongoDB från Python

Följande sträng, med lämpliga ändringar, kan placeras i Python-koden för användning av PyMongo förare:

Figur 5 – Ansluter via Python och PyMongo

I anslutningssträngen ovan, databasnamnet RazorDemo kommer att användas i stället för myFirstDatabase .

Hur man skapar en databas i MongoDB

MongoDB "skapar" inte en databas förrän den databasen "används" och data faktiskt skrivs in i den. Bilden nedan visar en lyckad anslutning till MongoDB Atlas-tjänsten med RazorDemo databas, men det finns ingen sådan databas listad när du använder show dbs kommando:

Figur 6 – Ingen RazorDemo-databas... ännu

Hur man "använder" en databas i MongoDB

I MongoDB "används" en databas när den antingen är ansluten till direkt med hjälp av frågesträngen eller när databasnamnet är argumentet för användning kommando. Notera hur ett anrop av detta kommando på den för närvarande valda databasen visar ett annat meddelande än att byta till den databasen:

Figur 7 – Växla mellan databaser

För att faktiskt "skapa" databasen måste en del data infogas. RazorDemo databas från de tidigare artiklarna, Komma igång med Razor Pages Using C# och Python Database Programming med SQL Express för nybörjare, använder två tabeller, nämligen Artister och Album . I MongoDB kallas det en SQL-orienterad databas kallar en tabell för en samling . Skapar två poster i samlingar med namnet Artister och Album , kommer att skapa både databasen och samlingarna.

Varje post i en samling kallas ett dokument . Detta är analogt med en post i en SQL-orienterad databastabell.

Observera, precis som det är viktigt för ett större program att spara skapa tabellen satser i en SQL-orienterad databas, kommer samma resonemang också att gälla för de första kommandona för att skapa databaser och samlingar för en MongoDB-databas för en större applikation.

Kommandona nedan skapar Artister samling genom att infoga ett enstaka dokument i den och sedan fråga Artister samling för att verifiera framgången av insättningsoperationen. Notera hur infogningsoperationen använder JSON-syntax:

db.Artists.insertOne({artist_name: "Skeered Tigon Stripes"})

db.Artists.find({})

Listing 1 - Inserting a new document.

Dessa kommandon ger följande utdata i MongoDB Shell:

Figur 8 – Skapa artistsamlingen

_id som visas ovan skapades automatiskt och är unik i samlingen, liknande ett automatiskt genererat primärnyckelvärde i en SQL-orienterad databas.

Observera att MongoDB Shell kan rapportera att .insert() kommandot är föråldrat. Det här exemplet använder .insertOne() kommandot eftersom det är ett av de tillhandahållna alternativen.

Liknande syntax kan användas för att skapa Album samling:

db.Albums.insertOne({artist_name: "Skeered Tigon Stripes",album_name: "Genetically Engineered Critters"})

db.Albums.find({})

Listing 2 - Inserting another new document

Figur 9 – Skapa albumsamlingen

Obs, varningen relaterad till caniuse-lite visas när du trycker på Enter innan du slutför kommandot för att skapa ett dokument. MongoDB Shell kommer att tillåta ett kommando att brytas över flera rader innan det slutförs. Den här varningen indikerar att MongoDB Shell kan använda en föråldrad drivrutin och att den kommer att behöva uppdateras i en framtida version.

Det verkar inte bryta processen för att skapa dokument.

Några fler dokument för Album samling:

db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Volume Control: No" })
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Verse Vica })
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Rotten to the Core" })

db.Albums.find({})

Listing 3 - Additional documents for the Albums collection

Figur 10 – Nya ytterligare albumdokument

INGEN utländska nyckelbegränsningar

Eftersom MongoDB inte är ett relationsdatabashanteringssystem, tillhandahåller det inte en mekanism för att upprätthålla de typer av främmande nyckelbegränsningar som används i SQL-orienterade databastabeller mellan samlingar. Den förväntar sig att ansökan upprätthåller och upprätthåller sådana förbindelser. I samband med MongoDB Shell åligger det utvecklaren att skriva in värdena korrekt för att säkerställa att ett förhållande mellan dokumenten i samlingarna kan utläsas.

.deleteOne() kommandot kan användas för att radera felaktigt angivna dokument:

db.Albums.deleteOne({ artist_name: "Skeered Tigon Stripes", album_name: "I Typed the Album Name Wrong" })
Listing 4 - Deleting a document.

Observera att om ett dokument inte matchar de angivna parametrarna kommer inget fel att visas, istället kommer bekräftelsemeddelandet att visa att ingenting har raderats:

Figur 11 – Bekräftelsemeddelande som visar att inga dokument har tagits bort

.deleteMany() kommandot kan användas för att radera flera poster som matchar ett JSON-kriterium. Kommandot nedan tar bort alla dokument i albumsamlingarna där artistnamn värdet är inte Skeered Tigon Stripes :

db.Albums.deleteMany({artist_name: {$ne : "Skeered Tigon Stripes" }})

Listing 5 - Deleting multiple documents based on criteria.

Figur 12 – Ta bort flera poster

Sluta tankar om Python-databasprogrammering med MongoDB

Nu när vi har lärt oss hur man ansluter till en MongoDB-databas och hur man skapar en NO SQL-version av en tabell med "poster", kan vi gå vidare till att arbeta med Python-skript för att infoga data i vår MongoDB-databas. Vi kommer att fortsätta den diskussionen i den andra – och sista – delen av denna Python-databasprogrammeringshandledning:Python och MongoDB Database Development.


  1. Placering av mongodb-databasen på mac

  2. Ställa in cache_store i en initialiserare

  3. Förslag på enkel .NET distribuerad cachningslösning

  4. MongoDB - Importera data