MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Програмиране на база данни на Python с MongoDB за начинаещи

Целта на този урок за програмиране на база данни на Python е да предостави нежно въведение в използването на база данни NoSQL като хранилище на данни за приложения на Python. Предвидената аудитория са разработчици на ниво начинаещи или разработчици на средно ниво, които са запознати с използването на SQL-ориентирани бази данни като Oracle, SQL Server или MySQL. Демонстрациите в тази статия ще бъдат паралелни с демонстрациите, използвани в други статии за програмиране на база данни на SQL, включващи Python, като например Програмиране на база данни на Python със SQL Express за начинаещи, и по същия начин ще използва Python 3.

Какво е NoSQL?

Популярността на Python продължава да нараства отчасти поради лекотата, с която може да работи с новите технологии. Една такава „нова“ технология е използването на „NoSQL“ бази данни. Една от най-привлекателните характеристики на тези типове бази данни е фактът, че, както подсказва името, обикновено няма допълнителен език за заявки, като един от привидно многото варианти на SQL, който трябва да се научи, за да работите с базата данни от програмна гледна точка. Това значително улеснява разработването на приложения, тъй като естествените структури от данни на езика за програмиране и неговият синтаксис са де факто „език за заявки“, при условие, разбира се, съответните модули да бъдат добавени към средата за разработка.

NoSQL бази данни, в допълнение към предимно не използвайки език за заявки, също структурирайте данните вътрешно по начин, който е значително различен от SQL бази данни. Разработчик, който е по-свикнал с парадигмата за програмиране на SQL, трябва да адаптира своето мислене, за да съответства на това как NoSQL прави бизнес. Отивайки по-далеч под капака, дизайнът на сървърите на бази данни NoSQL споделя същата разлика. NoSQL сървърите на бази данни са по-фокусирани върху скоростта и мащабируемостта с „евентуална последователност“, за разлика от SQL сървърите на бази данни, които са фокусирани повече върху непосредствената последователност.

Какво е MongoDB?

MongoDB е една от многото „NoSQL“ бази данни. Подобно на MariaDB, той използва собствена система за потребителско име и парола за управление на достъпа. MongoDB, в допълнение към предлагането на сървърен софтуер с нулеви разходи за изтегляне, предлага и облачна въвеждаща опция с нулеви разходи (чрез своя Atlas offering), което смекчава необходимостта от изтегляне и конфигуриране на екземпляр. Демонстрациите в този урок за програмиране на база данни ще използват безплатния екземпляр на MongoDB, хостван в облак.

Както е в случая с Python и всеки сървър на база данни, допълнителен модул на драйвер за база данни, а именно PyMongo , е необходим за Python да комуникира със сървъра MongoDB и всички бази данни, съдържащи се в него. Освен това, като всеки сървър на база данни, MongoDB предоставя придружаващ инструмент за управление, наречен MongoDB Shell . Демонстрациите в тази статия ще използват база данни MongoDB, създадена с помощта на този инструмент. Имайте предвид, че MongoDB Shell е един от многото инструменти за управление, които съществуват за MongoDB.

  • Изтегляне на MongoDB Community Server
  • Облачно базирано въвеждащо предложение с нулева цена на MongoDB
  • Изтегляне на обвивка MongoDB

Моля, имайте предвид, че публикуваните връзки са били активни към момента на писане на тази статия. Ако връзките вече не са активни, тези продукти могат да бъдат изтеглени чрез предпочитаната от вас търсачка.

Как да конфигурирате MongoDB за разработка на софтуер

Облачно-базирано въвеждащо предложение с нулева цена на MongoDB конфигурацията е изцяло уеб базирана. Той може удобно да бъде свързан с нечий акаунт в Google за целите на еднократно влизане. Само имайте предвид следните предупреждения:

  • Изберете услуга за хостинг на данни, която е физически наблизо. Хостинг услугата, показана в тази статия, която е във Вирджиния, може да не е идеална за някой, който е далеч от там.
  • Паролата, която се използва за свързване на приложение към сървъра на базата данни, трябва да бъде запазена сигурно, тъй като не може да бъде възстановена, ако бъде загубена. Може само да се нулира.
  • Името на клъстера, веднъж зададено, не може да бъде променено. Демонстрациите в тази статия ще използват клъстер с име Cluster0 .
  • Уверете се, че всеки IP адрес, от който всяко приложение, включително MongoDB Shell, е конфигуриран в настройките за защита.
  • Обвивката на MongoDB може да няма инсталационна програма. Винаги се уверете, че сте включили пътя до папката, която съдържа това приложение, в пътя на операционната система.

Как да се свържете със сървъра на базата данни MongoDB

След успешно конфигуриране на облачно-базирания MongoDB клъстер, ще е необходимо да се отбележи конкретният низ за връзка, използван за свързване с него. Низовете по-долу могат също да бъдат извлечени, като влезете в MongoDB Atlas Site и щракнете върху Свързване бутон:

Фигура 1 – Таблото за управление на MongoDB Atlas с подчертан бутон за свързване

Имайте предвид, че настройки като потребителско име и парола на базата данни и разрешени IP диапазони за връзка могат да бъдат зададени съответно във връзките за достъп до база данни и достъп до мрежата.

По-долу са дадени два примера за свързване. Първият е за MongoDB Shell.

MongoDB:Свързване от командния ред

Отваряне на команден ред на Windows е обяснено в Програмиране на база данни на Python със SQL Express за начинаещи под Отварящ се команден ред Windows заглавие.

Фигура 2 – Свързване чрез командния ред към MongoDB Shell

Имайте предвид, че командата за отваряне на MongoDB Shell ще варира в зависимост от операционната система. Името на клъстера може да варира и маркираните параметри в командата ще трябва да бъдат променени с подробностите на базираната в облак настройка на MongoDB. В Windows тази команда се нарича mongosh . Имайте предвид, че името на базата данни RazorDemo е включено по-долу, тъй като това е базата данни, която ще се използва в демонстрациите в този урок по програмиране. Командата също така приема допълнителен параметър за паролата, както е показано по-долу:

Фигура 3 – Удостоверяване с паролата в командния ред.

Имайте предвид, че въпреки че е удобно за целите на разработката да използвате паролата в командния ред, вместо да се налага да я въвеждате всеки път, имайте предвид, че паролата се показва в историята на по-рано изпълнени команди. Тази опция не трябва да се използва в среди за разработка, където други потребители имат достъп до предишната история на командите.

Освен това, надявам се, никой не е мислил, че всъщност ще използвам 123456 като парола, нали?

Фигура 4 – Само проверка 🙂

Имайте предвид, че и в двата примера по-горе, ^ символът се използва като символ за продължение на реда в командния ред на Windows.

Свързване на MongoDB от Python

Следният низ, с подходящи промени, може да бъде поставен в кода на Python за използване от PyMongo шофьор:

Фигура 5 – Свързване чрез Python и PyMongo

В низа за връзка по-горе, името на базата данни RazorDemo ще се използва вместо myFirstDatabase .

Как да създадете база данни в MongoDB

MongoDB не „създава“ база данни, докато тази база данни не бъде „използвана“ и данните действително не бъдат записани в нея. Изображението по-долу показва успешна връзка с услугата MongoDB Atlas с помощта на RazorDemo база данни, но няма такава база данни в списъка, когато използвате show dbs команда:

Фигура 6 – Все още няма база данни RazorDemo...

Как да „използвам“ база данни в MongoDB

В MongoDB база данни се „използва“ винаги, когато е свързана директно с низа на заявката или когато името на базата данни е аргументът на use команда. Обърнете внимание как извикването на тази команда в текущо избраната база данни показва различно съобщение от превключването към тази база данни:

Фигура 7 – Превключване между бази данни

За да „създадете“ базата данни, трябва да се вмъкнат някои данни. RazorDemo база данни от предишните статии, Първи стъпки с Razor Pages с използване на C# и програмиране на база данни на Python със SQL Express за начинаещи, използва две таблици, а именно Изпълнители и Албуми . В MongoDB това, което SQL-ориентирана база данни нарича таблица, се нарича колекция . Създаване на два записа в колекции с име Изпълнители и Албуми , съответно, ще създаде както базата данни, така и колекциите.

Всеки запис в колекция се нарича документ . Това е аналогично на запис в SQL-ориентирана таблица на база данни.

Забележете, точно както е важно за голямо приложение да запази създаване на таблица изрази в SQL-ориентирана база данни, същите разсъждения ще се прилагат и към началната база данни и командите за създаване на колекция за база данни MongoDB за основно приложение.

Командите по-долу ще създадат Изпълнители колекция, като вмъкнете един единствен документ в нея и след това потърсете Изпълнители колекция, за да се провери успеха на операцията вмъкване. Обърнете внимание как операцията вмъкване използва синтаксис на JSON:

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

db.Artists.find({})

Listing 1 - Inserting a new document.

Тези команди дават следния изход в MongoDB Shell:

Фигура 8 – Създаване на колекция Artists

_id показаната по-горе е създадена автоматично и е уникална в колекцията, подобно на автоматично генерирана стойност на първичен ключ в SQL-ориентирана база данни.

Забележка, MongoDB Shell може да съобщи, че .insert() командата е отхвърлена. Този пример използва .insertOne() команда, тъй като това е една от предоставените алтернативи.

Подобен синтаксис може да се използва за създаване на Албуми колекция:

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

db.Albums.find({})

Listing 2 - Inserting another new document

Фигура 9 – Създаване на колекция от албуми

Забележка, предупреждението, свързано с caniuse-lite, се появява при натискане на Enter ключ, преди да завършите командата за създаване на документ. MongoDB Shell ще позволи командата да бъде разбита на няколко реда, преди да я завърши. Това предупреждение показва, че MongoDB Shell може да използва остарял драйвер и ще трябва да бъде актуализиран в бъдеща версия.

Изглежда, че не нарушава процеса на създаване на документ.

Още малко документи за Албумите колекция:

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

Фигура 10 – Нови допълнителни документи за албум

НЯМА ограничения за външни ключове

Тъй като MongoDB не е система за управление на релационна база данни, тя не предоставя механизъм за налагане на видовете ограничения на външния ключ, използвани в SQL-ориентирани таблици на база данни между колекциите. Той очаква приложението да поддържа и налага такива отношения. В контекста на MongoDB Shell, разработчикът е длъжен да въведе правилно стойностите, за да гарантира, че връзката между документите в колекциите може да бъде изведена.

Функцията .deleteOne() командата може да се използва за изтриване на неправилно въведени документи:

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

Имайте предвид, че ако даден документ не съответства на въведените параметри, няма да се покаже грешка, вместо това съобщението за потвърждение ще покаже, че нищо не е изтрито:

Фигура 11 – Съобщение за потвърждение, показващо няма изтрити документи

Функцията .deleteMany() командата може да се използва за изтриване на множество записи, които отговарят на JSON критерии. Командата по-долу изтрива всички документи в колекциите от албуми, в които име_на_изпълнител стойността не е Skeered Tigon Stripes :

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

Listing 5 - Deleting multiple documents based on criteria.

Фигура 12 – Изтриване на множество записи

Окончателни мисли за програмирането на база данни на Python с MongoDB

Сега, когато научихме как да се свържем с база данни MongoDB и как да създадем БЕЗ SQL версия на таблица със „записи“, можем да преминем към работа със скриптове на Python за вмъкване на данни в нашата база данни MongoDB. Ще продължим тази дискусия във втората – и последна – част от този урок за програмиране на база данни на Python:Разработка на база данни на Python и MongoDB.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Журналирането на MongoDB гарантира ли издръжливост?

  2. Как да зададете ограничение за размера на масива в схемата на Mongoose

  3. 'process.nextTick(function() { throw err; })' - Undefined не е функция (mongodb/mongoose)

  4. Справяне с промени в схемата в Mongoose

  5. Как да спрем mongodb сървъра на Windows?