最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django項(xiàng)目連接MongoDB的三種方法

 更新時(shí)間:2021年09月26日 16:51:52   作者:雪中魚(yú)01  
本文主要介紹了Django項(xiàng)目連接MongoDB的三種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

有三種方法連接Django到MongoDB數(shù)據(jù)庫(kù)

1.PyMongo:PyMongo 是 MongoDB 與 Django 交互的標(biāo)準(zhǔn)驅(qū)動(dòng)程序。這是在 Python 中使用 MongoDB 的官方和首選方式。 PyMongo 提供了執(zhí)行所有數(shù)據(jù)庫(kù)操作的功能,例如搜索、刪除、更新和插入。由于 PyMongo 可與 PyPI 一起使用,您可以使用 pip 命令快速安裝它。

2.MongoEngine: MongoEngine 是一個(gè) Python 對(duì)象文檔映射器。它類(lèi)似于關(guān)系數(shù)據(jù)庫(kù)中的 Object-Relational-Mapper。 MongoEngine 具有易于學(xué)習(xí)和使用的聲明式 API。

3.Djongo:如果您正在使用 SQL 這樣的關(guān)系型數(shù)據(jù)庫(kù)并希望遷移到 MongoDB,那么您可以使用 Djongo。在不更改 Django ORM 的情況下,Djongo 將所有 SQL 查詢(xún)轉(zhuǎn)換為 MongoDB 語(yǔ)法查詢(xún)。

哪種方法連接到 Django MongoDB 更好呢?

Django 和 MongoDB 設(shè)置

為了讓集成工作,你應(yīng)該有一個(gè) Django 和 MongoDB 設(shè)置。如果你的機(jī)器上有 Python,你可以使用 pip 安裝 Django。如果您希望在特定環(huán)境而不是整個(gè)系統(tǒng)中安裝 Django,您可以創(chuàng)建一個(gè)虛擬環(huán)境。根據(jù)您的 Python 版本使用 pip/pip3:

安裝:

Windows:

pip install virtualenvwrapper-win

Mac OS / Linux:

pip install virtualenvwrapper

創(chuàng)建:

Windows:

mkvirtualenv MyProjectEnvt

Mac OS / Linux:

virtualenv MyProjectEnvt

激活:

Mac OS / Linux

source MyProjectEnvt/bin/activate

Windows:

workon MyProjectEnvt

要停用虛擬環(huán)境,您只需鍵入命令deactivate。 現(xiàn)在使用 pip install Django 安裝 Django。 要啟動(dòng) Django 項(xiàng)目,請(qǐng)轉(zhuǎn)到要啟動(dòng)項(xiàng)目的文件夾并使用以下命令:

django-admin startproject <project_name>.

例如:

C:\Users\myuser\project_files>django-admin startproject MyFirstDjangoProj
C:\Users\myuser\project_files>cd MyFirstDjangoProj

要?jiǎng)?chuàng)建應(yīng)用程序,請(qǐng)使用以下命令:

python manage.py startapp myfirstapp

如果您使用的是 Python 版本 >= 3.0,請(qǐng)將命令中的 python 替換為 python3。 在應(yīng)用程序內(nèi)部,我們可以有許多模型將映射到 MongoDB 中的集合和文檔。 啟動(dòng)項(xiàng)目后,所有文件都將在項(xiàng)目文件夾中可用。使用 python manage.py runserver 命令啟動(dòng)服務(wù)器。 您的 Django 設(shè)置現(xiàn)已完成。 如果您還沒(méi)有設(shè)置 MongoDB,請(qǐng)使用 MongoDB Atlas 來(lái)充分利用云托管。 Atlas 與所有主要的云提供商無(wú)縫合作。

使用 PyMongo 連接 Django 和 MongoDB

PyMongo 對(duì)于將 JSON 數(shù)據(jù)寫(xiě)入 MongoDB 非常有效,并且允許在 Python 代碼本身中使用 MongoDB 查詢(xún)。我們可以使用 PyMongo 像語(yǔ)法一樣檢索字典中的數(shù)據(jù)。 使用 pip/pip3 命令輕松安裝 PyMongo:

pip install pymongo[snappy,gssapi,srv,tls]

如果您使用的是虛擬環(huán)境,則必須在 ..\venv\Lib\site-packages 文件夾中安裝 pymongo。 此外,安裝 dnspython 以使用 mongodb+srv:// URI 與命令:

pip install dnspython

使用 PyMongo,我們可以通過(guò)為連接實(shí)例指定正確的數(shù)據(jù)庫(kù)名稱(chēng)來(lái)同時(shí)運(yùn)行多個(gè)數(shù)據(jù)庫(kù)。

讓我們創(chuàng)建一個(gè)示例 pymongo 會(huì)話。為此,有兩種方法:

1.我們可以在 utils 文件中創(chuàng)建一個(gè)客戶(hù)端,任何想要與 MongoDB 交互的視圖都可以使用它。在您的項(xiàng)目文件夾(與 manage.py 相同的位置)中創(chuàng)建一個(gè) utils.py 文件并實(shí)例化客戶(hù)端:

from pymongo import MongoClient
def get_db_handle(db_name, host, port, username, password):
 
 client = MongoClient(host=host,
                      port=int(port),
                      username=username,
                      password=password
                     )
 db_handle = client['db_name']
 return db_handle, client

然后可以在 ./myfirstapp/view.py 中使用此方法。

2.獲取連接的另一種方法是使用 connection_string:

from pymongo import MongoClient
client = pymongo.MongoClient('connection_string')
db = client['db_name']

connection_string = mongodb+srv://<username>:<password>@<atlas cluster>
/<myFirstDatabase>?retryWrites=true&w=majority

例如:

makemyrx_db = client['sample_medicines']
#collection object
medicines_collection = makemyrx_db['medicinedetails']

您可能已經(jīng)在其他代碼示例或教程中看到了 Connection 類(lèi)。連接已被棄用,所以不要使用它。

如果您使用的是默認(rèn)端口和主機(jī),只需調(diào)用 MongoClient()。要連接到 localhost,我們可以明確指定主機(jī)和端口為:

MongoClient(‘localhost', 27017)

或者

使用 URL 格式 MongoClient(‘mongodb://localhost: 27017/')

由于我們已經(jīng)在此處創(chuàng)建了客戶(hù)端,因此我們需要在 settings.py 文件中注釋 DATABASES 部分。使用三重引號(hào)注釋相同的內(nèi)容。

使用 MongoEngine 連接 Django 和 MongoDB

MongoEngine 是 PyMongo 之上的 ORM 層。因此,您的系統(tǒng)仍然需要 PyMongo (>=3.4) 才能使用 MongoEngine。

使用 MongoEngine 連接 Django 和 MongoDB,您可以使用 ListField 和 DictField 等字段來(lái)處理巨大的非結(jié)構(gòu)化 JSON 數(shù)據(jù)。

首先,使用以下命令安裝 MongoEngine:

pip install mongoengine

正如我們?cè)谏弦还?jié)中看到的,在使用 PyMongo 時(shí),我們必須在 settings.py 中注釋 DATABASES 部分。然后,要使用 MongoEngine,請(qǐng)?zhí)砑右韵聝?nèi)容:

import mongoengine
mongoengine.connect(db=db_name, host=hostname, username=username, password=pwd)

使用 MongoEngine,我們必須在 Django 應(yīng)用程序的 models.py 文件中定義一個(gè)模式。 MongoDB 是無(wú)模式的。該架構(gòu)僅在應(yīng)用程序級(jí)別執(zhí)行,從而使未來(lái)的任何更改都變得快速而輕松。 MongoEngine 類(lèi)似于 Django 的默認(rèn) ORM,但在 model.py 中有以下變化:

Django's ORM MongoEngine
from django.db import models

from mongoengine import Document, fields or from mongoengine import *

Model Document
models.CharField fields.StringField()

不同之處在于我們使用的是模型,當(dāng)使用 MongoEngine 時(shí),模型被文檔和字段替換。 還有許多其他工具可以與 PyMongo 一起使用。

使用 Djongo 連接 Django 和 MongoDB

Djongo 是對(duì) PyMongo 的改進(jìn),因?yàn)殚_(kāi)發(fā)人員無(wú)需編寫(xiě)冗長(zhǎng)的查詢(xún)。它將 Python 對(duì)象映射到 MongoDB 文檔,即對(duì)象文檔映射 (ODM)。 Djongo 確保只有干凈的數(shù)據(jù)才能進(jìn)入數(shù)據(jù)庫(kù)。通過(guò)使用 Djongo 執(zhí)行完整性檢查、應(yīng)用驗(yàn)證等,無(wú)需修改現(xiàn)有的 Django ORM。

安裝Djongo:

pip install djongo

現(xiàn)在,轉(zhuǎn)到您的項(xiàng)目文件夾(例如 MyFirstDjangoProj),并打開(kāi) settings.py 文件。您可以在 Textpad、Python IDE 或任何編輯器上對(duì)其進(jìn)行編輯。搜索 DATABASES,并將設(shè)置更改為指向 MongoDB。 ENGINE 將是 djongo,數(shù)據(jù)庫(kù)名稱(chēng) (NAME) 將是您的 MongoDB 數(shù)據(jù)庫(kù)名稱(chēng)。

DATABASES = {
       'default': {
           'ENGINE': 'djongo',
           'NAME': 'db-name',
       }
   }

如果您的數(shù)據(jù)庫(kù)不在本地主機(jī)上或受到保護(hù),您還應(yīng)該填寫(xiě) CLIENT 信息,如 HOST、USERNAME、PASSWORD 等。

DATABASES = {
        'default': {
            'ENGINE': 'djongo',
            'NAME': 'your-db-name',
            'ENFORCE_SCHEMA': False,
            'CLIENT': {
                'host': 'mongodb+srv://<username>:<password>@<atlas cluster>/<myFirstDatabase>?retryWrites=true&w=majority'
            }  
        }
}

確保在 settings.py 的 INSTALLED_APPS 設(shè)置中添加了應(yīng)用名稱(chēng):

INSTALLED_APPS = [
    'myfirstapp',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

現(xiàn)在我們有了 Django 項(xiàng)目(和應(yīng)用程序),您可以使用以下命令在 MongoDB 中創(chuàng)建集合:

python manage.py makemigrations <app-name>
python manage.py migrate

將創(chuàng)建集合(應(yīng)用程序中的 Django 模型——請(qǐng)注意,我們談?wù)摰氖菓?yīng)用程序而不是項(xiàng)目)。您可以通過(guò)打開(kāi) Django Admin 來(lái)檢查相同的內(nèi)容。 您可以使用管理 GUI 或手動(dòng)將數(shù)據(jù)插入到集合中。 要使用管理控制臺(tái),請(qǐng)打開(kāi)瀏覽器并轉(zhuǎn)到 http://127.0.0.1:8000/admin(或 localhost)。您應(yīng)該創(chuàng)建一個(gè)超級(jí)用戶(hù)以進(jìn)入管理控制臺(tái)。如果您的應(yīng)用程序中沒(méi)有任何模型,請(qǐng)按照有關(guān)如何創(chuàng)建和注冊(cè)模型的 Django 教程進(jìn)行操作。 如果您希望 Djongo 免遷移,請(qǐng)?jiān)谀臄?shù)據(jù)庫(kù)配置中設(shè)置 ENFORCE_SCHEMA: False。使用此設(shè)置,集合是動(dòng)態(tài)創(chuàng)建的,Djongo 不會(huì)將 SQL 語(yǔ)句轉(zhuǎn)換為 MongoDB 命令。

Django 和 MongoDB 教程

(請(qǐng)隨意編寫(xiě)代碼或從此 GitHub 存儲(chǔ)庫(kù)下載完整代碼。) 在本快速教程中,我們將演示如何使用 PyMongo 進(jìn)行簡(jiǎn)單的 CRUD 操作。為此,讓我們創(chuàng)建一個(gè) PyMongo 會(huì)話:

import pymongo
#connect_string = 'mongodb+srv://<username>:<password>@<atlas cluster>/<myFirstDatabase>?retryWrites=true&w=majority' 
 
from django.conf import settings
my_client = pymongo.MongoClient(connect_string)
 
# First define the database name
dbname = my_client['sample_medicines']
 
# Now get/create collection name (remember that you will see the database in your mongodb cluster only after you create a collection
collection_name = dbname["medicinedetails"]
 
#let's create two documents
medicine_1 = {
    "medicine_id": "RR000123456",
    "common_name" : "Paracetamol",
    "scientific_name" : "",
    "available" : "Y",
    "category": "fever"
}
medicine_2 = {
    "medicine_id": "RR000342522",
    "common_name" : "Metformin",
    "scientific_name" : "",
    "available" : "Y",
    "category" : "type 2 diabetes"
}
# Insert the documents
collection_name.insert_many([medicine_1,medicine_2])
# Check the count
count = collection_name.count()
print(count)
 
# Read the documents
med_details = collection_name.find({})
# Print on the terminal
for r in med_details:
    print(r["common_name"])
# Update one document
update_data = collection_name.update_one({'medicine_id':'RR000123456'}, {'$set':{'common_name':'Paracetamol 500'}})
 
# Delete one document
delete_data = collection_name.delete_one({'medicine_id':'RR000123456'})

接下來(lái),您可以連接到您的 MongoDB Atlas 集群并進(jìn)行驗(yàn)證。

下一步 現(xiàn)在我們知道了連接 Django 和 MongoDB 的不同方式,我們必須為我們的項(xiàng)目選擇正確的方式。這些方法各有優(yōu)缺點(diǎn)。 例如,如果您是從頭開(kāi)始,MongoEngine 是一個(gè)不錯(cuò)的選擇,因?yàn)樗梢暂p松處理大量非結(jié)構(gòu)化數(shù)據(jù)。如果您要在應(yīng)用程序中編寫(xiě)大量復(fù)雜的查詢(xún),則應(yīng)該使用 PyMongo。 如果您有一個(gè) Django 項(xiàng)目需要從另一個(gè)數(shù)據(jù)庫(kù)遷移到 MongoDB,那么 Djongo 更合適,因?yàn)檫@需要最少的代碼更改。

到此這篇關(guān)于Django項(xiàng)目連接MongoDB的三種方法的文章就介紹到這了,更多相關(guān)Django連接MongoDB內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python參數(shù)類(lèi)型以及常見(jiàn)的坑詳解

    Python參數(shù)類(lèi)型以及常見(jiàn)的坑詳解

    這篇文章主要介紹了Python參數(shù)類(lèi)型以及常見(jiàn)的坑詳解,由于之前遇到過(guò)幾次有關(guān)于參數(shù)類(lèi)型的坑,以及經(jīng)常容易把一些參數(shù)類(lèi)型搞混淆,現(xiàn)在做一下有關(guān)參數(shù)類(lèi)型的總結(jié)記錄以及對(duì)之前踩坑經(jīng)歷的分析,需要的朋友可以參考下
    2019-07-07
  • python網(wǎng)絡(luò)爬蟲(chóng)精解之pyquery的使用說(shuō)明

    python網(wǎng)絡(luò)爬蟲(chóng)精解之pyquery的使用說(shuō)明

    PyQuery是一個(gè)類(lèi)似于jQuery的解析網(wǎng)頁(yè)工具,使用lxml操作xml和html文檔,它的語(yǔ)法和jQuery很像。和XPATH,Beautiful Soup比起來(lái),PyQuery更加靈活,提供增加節(jié)點(diǎn)的class信息,移除某個(gè)節(jié)點(diǎn),提取文本信息等功能
    2021-09-09
  • Python中利用sorted()函數(shù)排序的簡(jiǎn)單教程

    Python中利用sorted()函數(shù)排序的簡(jiǎn)單教程

    這篇文章主要介紹了Python中利用sorted()函數(shù)排序的簡(jiǎn)單教程,sorted()函數(shù)有返回值,在Python的排序?qū)崿F(xiàn)中發(fā)揮著相當(dāng)重要的作用,需要的朋友可以參考下
    2015-04-04
  • Python中的SortedList詳解

    Python中的SortedList詳解

    這篇文章主要介紹了Python中的SortedList集合詳解,Python的SortedSet是一個(gè)強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),它結(jié)合了列表和集合的特性,你可以使用sortedcontainers模塊中的SortedList類(lèi)來(lái)創(chuàng)建和操作SortedSet,需要的朋友可以參考下
    2023-09-09
  • Python TCP接收數(shù)據(jù)不全的問(wèn)題解決

    Python TCP接收數(shù)據(jù)不全的問(wèn)題解決

    本文主要介紹了Python TCP接收數(shù)據(jù)不全的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Python語(yǔ)言的自我介紹一起來(lái)看看

    Python語(yǔ)言的自我介紹一起來(lái)看看

    這篇文章主要為大家詳細(xì)介紹了Python語(yǔ)言的自我介紹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • Python  unittest單元測(cè)試框架的使用

    Python unittest單元測(cè)試框架的使用

    這篇文章主要介紹了Python unittest單元測(cè)試框架的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • 使用python編寫(xiě)簡(jiǎn)單計(jì)算器

    使用python編寫(xiě)簡(jiǎn)單計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了使用python編寫(xiě)一個(gè)簡(jiǎn)單的計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • python的pytest框架之命令行參數(shù)詳解(上)

    python的pytest框架之命令行參數(shù)詳解(上)

    這篇文章主要介紹了python的pytest框架之命令行參數(shù)詳解,pytest是一款強(qiáng)大的python自動(dòng)化測(cè)試工具,可以勝任各種類(lèi)型或者級(jí)別的軟件測(cè)試工作。pytest提供了豐富的功能,包括assert重寫(xiě),第三方插件,需要的朋友可以參考下
    2019-06-06
  • Python中tkinter庫(kù)的簡(jiǎn)單使用

    Python中tkinter庫(kù)的簡(jiǎn)單使用

    這篇文章主要介紹了Python中tkinter庫(kù)的簡(jiǎn)單使用,Tkinter是Python中常用的GUI庫(kù),它使用Tk GUI工具包,并提供了創(chuàng)建各種GUI應(yīng)用程序的功能,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

苏尼特左旗| 申扎县| 台中市| 察隅县| 萍乡市| 蒙阴县| 雷州市| 鹤庆县| 沧源| 定远县| 安西县| 且末县| 得荣县| 昆明市| 西宁市| 农安县| 彭阳县| 临湘市| 永定县| 新昌县| 沅江市| 凯里市| 荆州市| 顺平县| 建昌县| 鹤山市| 焉耆| 探索| 阳新县| 贵州省| 措美县| 清流县| 黄大仙区| 古浪县| 陕西省| 阿图什市| 朝阳县| 稻城县| 南木林县| 南溪县| 绥芬河市|