sql >> Databáze >  >> NoSQL >> MongoDB

Programování databáze Python s MongoDB pro začátečníky

Účelem tohoto kurzu programování databáze v Pythonu je poskytnout jemný úvod do používání databáze NoSQL jako úložiště dat pro aplikace Python. Zamýšleným publikem jsou vývojáři na úrovni začátečníků nebo vývojáři na střední úrovni, kteří jsou obeznámeni s používáním databází orientovaných na SQL, jako je Oracle, SQL Server nebo MySQL. Ukázky v tomto článku budou paralelní s ukázkami používanými v jiných článcích o programování databáze SQL zahrnujících Python, jako je programování databáze Python s SQL Express pro začátečníky, a podobně budou používat Python 3.

Co je NoSQL?

Popularita Pythonu stále roste, částečně proto, že může pracovat s novými technologiemi. Jednou z takových „nových“ technologií je použití „NoSQL“ databází. Jednou z nejatraktivnějších vlastností těchto typů databází je skutečnost, že, jak název napovídá, obecně neexistuje žádný další dotazovací jazyk, jako je například jedna ze zdánlivě mnoha variant SQL, které je nutné se naučit, aby bylo možné s databází pracovat. z programového hlediska. To značně usnadňuje vývoj aplikací, protože nativní datové struktury programovacího jazyka a jeho syntaxe jsou de facto „dotazovacím jazykem“, samozřejmě za předpokladu, že jsou do vývojového prostředí přidány příslušné moduly.

NoSQL databáze, kromě většinou nepoužívat dotazovací jazyk, také interně strukturovat data způsobem, který je výrazně odlišný od SQL databází. Vývojář, který je více zvyklý na programovací paradigma SQL, musí přizpůsobit své myšlení tomu, jak funguje NoSQL. Když půjdeme dále pod pokličku, design databázových serverů NoSQL sdílí stejnou odlišnost. Databázové servery NoSQL se více zaměřují na rychlost a škálovatelnost s „případnou konzistencí“, na rozdíl od databázových serverů SQL, které jsou zaměřeny více na okamžitou konzistenci.

Co je MongoDB?

MongoDB je jednou z mnoha „NoSQL“ databází. Stejně jako MariaDB používá pro správu přístupu svůj vlastní systém uživatelských jmen a hesel. MongoDB kromě toho, že nabízí serverový software ke stažení s nulovými náklady, nabízí také úvodní možnost cloudu s nulovými náklady (prostřednictvím svého Atlasu nabídka), což zmírňuje potřebu stahování a konfigurace instance. Ukázky v tomto kurzu programování databází budou používat bezplatnou instanci MongoDB hostovanou v cloudu.

Stejně jako v případě Pythonu a jakéhokoli databázového serveru je zde přídavný modul ovladače databáze, konkrétně PyMongo , je vyžadováno, aby Python komunikoval se serverem MongoDB a jakýmikoli databázemi v něm obsaženými. Kromě toho, jako každý databázový server, MongoDB poskytuje doprovodný nástroj pro správu nazvaný MongoDB Shell . Ukázky v tomto článku budou používat databázi MongoDB vytvořenou pomocí tohoto nástroje. Všimněte si, že MongoDB Shell je jedním z mnoha nástrojů pro správu, které existují pro MongoDB.

  • Stažení serveru komunity MongoDB
  • Zaváděcí nabídka MongoDB s nulovými náklady na cloud
  • Stažení prostředí MongoDB

Vezměte prosím na vědomí, že uvedené odkazy byly aktivní v době, kdy byl tento článek napsán. Pokud odkazy již nejsou aktivní, lze tyto produkty stáhnout prostřednictvím preferovaného vyhledávače.

Jak nakonfigurovat MongoDB pro vývoj softwaru

MongoDB Úvodní nabídka cloudových služeb s nulovými náklady konfigurace je zcela webová. Lze jej pohodlně propojit s účtem Google pro účely jednotného přihlášení. Mějte na paměti následující upozornění:

  • Vyberte službu hostování dat, která je fyzicky poblíž. Hostingová služba uvedená v tomto článku, která se nachází ve Virginii, nemusí být ideální pro někoho, kdo je odtamtud daleko.
  • Heslo, které se používá k připojení aplikace k databázovému serveru, musí být bezpečně uloženo, protože jej v případě ztráty nelze obnovit. Lze jej pouze resetovat.
  • Jakmile je název clusteru nastaven, nelze jej změnit. Ukázky v tomto článku budou používat cluster s názvem Cluster0 .
  • Zajistěte, aby byla v nastavení zabezpečení nakonfigurována jakákoli IP adresa, ze které je konfigurována jakákoli aplikace, včetně prostředí MongoDB Shell.
  • Shell MongoDB nemusí mít instalační program. Vždy se ujistěte, že jste do cesty k operačnímu systému zahrnuli cestu ke složce, která obsahuje tuto aplikaci.

Jak se připojit k databázovému serveru MongoDB

Po úspěšné konfiguraci Cloud-Based MongoDB Cluster bude nutné poznamenat konkrétní připojovací řetězec použitý k připojení k němu. Níže uvedené řetězce lze také získat přihlášením na web MongoDB Atlas a kliknutím na Připojit tlačítko:

Obrázek 1 – MongoDB Atlas Dashboard se zvýrazněným tlačítkem Connect

Všimněte si, že nastavení, jako je uživatelské jméno a heslo databáze a povolené rozsahy IP pro připojení, lze nastavit v odkazech Database Access a Network Access.

Níže jsou uvedeny dva příklady připojení. První je pro MongoDB Shell.

MongoDB:Připojení z příkazového řádku

Otevření Příkazového řádku systému Windows je vysvětleno v Python Database Programming with SQL Express for Beginners pod Otevřením příkazového řádku Windows nadpis.

Obrázek 2 – Připojení přes příkazový řádek k prostředí MongoDB

Všimněte si, že příkaz k otevření prostředí MongoDB se bude lišit podle operačního systému. Název clusteru se může lišit a zvýrazněné parametry v příkazu bude třeba změnit na podrobnosti cloudového nastavení MongoDB. Ve Windows se tento příkaz nazývá mongosh . Všimněte si, že název databáze RazorDemo je zahrnuta níže, protože to je databáze, která bude použita v ukázkách v tomto tutoriálu programování. Příkaz také přijímá další parametr pro heslo, jak je znázorněno níže:

Obrázek 3 – Ověření pomocí hesla v příkazovém řádku.

Všimněte si, že i když je pro účely vývoje vhodné používat heslo v příkazovém řádku, místo abyste ho museli pokaždé zadávat, pamatujte, že heslo se zobrazuje v historii dříve provedených příkazů. Tato možnost by se neměla používat ve vývojových prostředích, kde mají ostatní uživatelé přístup k historii předchozích příkazů.

Také doufám, že nikoho nenapadlo, že bych skutečně použil 123456 jako heslo, že?

Obrázek 4 – Kontrola 🙂

Všimněte si, že v obou výše uvedených příkladech ^ znak se používá jako symbol pokračování řádku v příkazovém řádku systému Windows.

Připojování MongoDB z Pythonu

Následující řetězec s vhodnými změnami lze umístit do kódu Pythonu pro použití PyMongo řidič:

Obrázek 5 – Připojení přes Python a PyMongo

Ve výše uvedeném připojovacím řetězci název databáze RazorDemo bude použito místo myFirstDatabase .

Jak vytvořit databázi v MongoDB

MongoDB „nevytváří“ databázi, dokud tato databáze není „použita“ a data do ní skutečně zapsána. Obrázek níže ukazuje úspěšné připojení ke službě MongoDB Atlas pomocí RazorDemo databáze, ale při použití show dbs žádná taková databáze uvedena není příkaz:

Obrázek 6 – zatím žádná databáze RazorDemo…

Jak „použít“ databázi v MongoDB

V MongoDB je databáze „použita“ vždy, když je k ní buď přímo připojena pomocí řetězce dotazu, nebo když je název databáze argumentem použití příkaz. Všimněte si, jak vyvolání tohoto příkazu na aktuálně vybrané databázi zobrazí jinou zprávu než přepnutí do této databáze:

Obrázek 7 – Přepínání mezi databázemi

Aby bylo možné databázi skutečně „vytvořit“, je nutné vložit některá data. RazorDemo databáze z předchozích článků Začínáme s Razor Pages pomocí C# a Python Database Programming s SQL Express pro začátečníky používá dvě tabulky, konkrétně Artists a Alba . V MongoDB se to, co databáze orientovaná na SQL nazývá tabulkou, nazývá kolekce . Vytváření dvou položek do sbírek s názvem Umělci a Alba , respektive vytvoří databázi i kolekce.

Každý záznam v kolekci se nazývá dokument . Je to analogie záznamu v databázové tabulce orientované na SQL.

Všimněte si, že stejně jako pro hlavní aplikace je důležité uložit vytvořit tabulku příkazy v databázi orientované na SQL, stejná úvaha bude platit také pro počáteční příkazy k vytvoření databáze a kolekce pro databázi MongoDB pro hlavní aplikaci.

Níže uvedené příkazy vytvoří Umělce kolekci tak, že do ní vložíte jeden dokument a poté se zeptáte Umělci sběr k ověření úspěšnosti operace vložení. Všimněte si, jak operace vložení používá syntaxi JSON:

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

db.Artists.find({})

Listing 1 - Inserting a new document.

Tyto příkazy poskytují v prostředí MongoDB Shell následující výstup:

Obrázek 8 – Vytvoření sbírky Artists

_id výše zobrazený byl automaticky vytvořen a je jedinečný v rámci kolekce, podobně jako automaticky generovaná hodnota primárního klíče v databázi orientované na SQL.

Poznámka:MongoDB Shell může hlásit, že .insert() příkaz je zastaralý. Tento příklad používá .insertOne() příkaz, protože to je jedna z nabízených alternativ.

Podobnou syntaxi lze použít k vytvoření alb kolekce:

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

db.Albums.find({})

Listing 2 - Inserting another new document

Obrázek 9 – Vytvoření kolekce alb

Poznámka, Varování týkající se caniuse-lite se zobrazí po stisknutí klávesy Enter před dokončením příkazu k vytvoření dokumentu. MongoDB Shell umožní rozdělit příkaz na více řádků před jeho dokončením. Toto varování znamená, že MongoDB Shell může používat zastaralý ovladač a bude nutné jej aktualizovat v budoucí verzi.

Nezdá se, že by to narušilo proces vytváření dokumentu.

Některé další dokumenty pro Alba kolekce:

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

Obrázek 10 – Nové další dokumenty alba

ŽÁDNÁ omezení cizího klíče

Protože MongoDB není systém správy relačních databází, neposkytuje mechanismus pro vynucení druhů omezení cizích klíčů používaných v databázových tabulkách orientovaných na SQL mezi kolekcemi. Očekává, že aplikace bude takové vztahy udržovat a prosazovat. V kontextu MongoDB Shell je povinností vývojáře správně zadat hodnoty, aby bylo zajištěno, že lze odvodit vztah mezi dokumenty ve sbírkách.

.deleteOne() příkaz lze použít k odstranění chybně zadaných dokladů:

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

Pamatujte, že pokud dokument neodpovídá zadaným parametrům, nezobrazí se žádná chyba, místo toho se v potvrzovací zprávě zobrazí, že nebylo nic smazáno:

Obrázek 11 – Potvrzující zpráva neukazuje, že nebyly odstraněny žádné dokumenty

.deleteMany() příkaz lze použít k odstranění více záznamů, které odpovídají kritériím JSON. Níže uvedený příkaz odstraní všechny dokumenty ve sbírkách alb, ve kterých je jméno_umělce hodnota není Skeered Tigon Stripes :

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

Listing 5 - Deleting multiple documents based on criteria.

Obrázek 12 – Smazání více záznamů

Poslední myšlenky o programování databáze Python s MongoDB

Nyní, když jsme se naučili, jak se připojit k databázi MongoDB a jak vytvořit NO SQL verzi tabulky se „záznamy“, můžeme přejít k práci se skripty Python pro vkládání dat do naší databáze MongoDB. V této diskusi budeme pokračovat ve druhé – a poslední – části tohoto výukového programu pro programování databází Python:Vývoj databáze Python a MongoDB.


  1. Jak deaktivovat Redis RDB a AOF?

  2. Uvnitř architektury Santander's Near Real-Time Data Ingest Architecture

  3. Nelze vytvořit funkční projekt meteor.js na tulákovské krabici

  4. Agregace MongoDB:Jak získat celkový počet záznamů?