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

使用Djongo模塊在Django中使用MongoDB數(shù)據(jù)庫(kù)

 更新時(shí)間:2021年06月19日 17:16:51   作者:州的先生  
Django框架為我們提供了簡(jiǎn)潔方便的ORM模型供我們對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種操作,但是這個(gè)“數(shù)據(jù)庫(kù)”卻并不包括NoSQL的典型——MongoDB。不少Django初學(xué)者也會(huì)到處詢(xún)問(wèn),如何才能在Django中使用MongoDB。本文將介紹使用Djongo來(lái)在Django中集成MongoDB數(shù)據(jù)庫(kù)

一、安裝與配置

Djongo的項(xiàng)目官方地址為:https://nesdis.github.io/djongo/,我們可以通過(guò)pip命令直接安裝djongo:

pip install djongo

在安裝完成之后,我們就可以直接在Django中配置MongoDB數(shù)據(jù)庫(kù)的信息了。

在正常情況下,我們的Django項(xiàng)目中數(shù)據(jù)庫(kù)在settings.py文件中進(jìn)行配置,其一般配置如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

而我們使用Djongo的話(huà),變化也不大,如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': 'MongoDB數(shù)據(jù)庫(kù)的名稱(chēng)',
    }
}

可以發(fā)現(xiàn),這與Django原始的數(shù)據(jù)庫(kù)配置方法是一模一樣的,所不同的是,數(shù)據(jù)庫(kù)的引擎使用了djongo而非Django官方提供的數(shù)據(jù)庫(kù)封裝引擎。

我們用一個(gè)新的Django項(xiàng)目來(lái)演示一下djongo的使用。

首先創(chuàng)建Django項(xiàng)目和應(yīng)用:

然后修改項(xiàng)目的settings.py文件,填寫(xiě)MongoDB數(shù)據(jù)庫(kù)的配置信息,Djongo提供了如下參數(shù)供我們?cè)O(shè)置數(shù)據(jù)庫(kù)的信息:

DATABASES = {
   'default': {
      'ENGINE': 'djongo',
      'ENFORCE_SCHEMA': True,
      'NAME': 'your-db-name',
      'HOST': 'host-name or ip address',
      'PORT': port_number,
      'USER': 'db-username',
      'PASSWORD': 'password',
      'AUTH_SOURCE': 'db-name',
      'AUTH_MECHANISM': 'SCRAM-SHA-1',
      'REPLICASET': 'replicaset',
      'SSL': 'ssl',
      'SSL_CERTFILE': 'ssl_certfile',
      'SSL_CA_CERTS': 'ssl_ca_certs',
      'READ_PREFERENCE': 'read_preference'
   }
}

我們的數(shù)據(jù)庫(kù)是本地的數(shù)據(jù)庫(kù),所以只需要設(shè)置一部分信息即可,其如下所示:

DATABASES = {
   'default': {
      'ENGINE': 'djongo',
      'ENFORCE_SCHEMA': True,
      'NAME': 'djongo_example',
      'HOST': '127.0.0.1',
      'PORT': 27017,
   }
}

這樣,MongoDB在Django中的 配置就完成了,我們下面可以定義一些模型。

二、定義模型

Djongo的一大特點(diǎn)是可以無(wú)縫地銜接Django的ORM語(yǔ)法,包括模型定義的語(yǔ)法和模型操作的語(yǔ)法。現(xiàn)在,我們就為Django項(xiàng)目定義一些模型。

在默認(rèn)情況下,Django應(yīng)用的模型在其目錄下的models.py文件中定義。models.py文件初始化狀態(tài)下只有如下一行代碼:

from django.db import models

這是Django數(shù)據(jù)庫(kù)封裝的模型類(lèi),我們需要將其修改為Djongo提供的模型類(lèi),如下所示:

from djongo import models

然后,就可以按照Django的方式來(lái)定義模型了。在這里,我們定義了一個(gè)News()模型,用于存儲(chǔ)新聞:

class News(models.Model):
    title = models.CharField(verbose_name="標(biāo)題",max_length=50)
    author = models.CharField(verbose_name="作者",max_length=10)
    desc = models.CharField(verbose_name="簡(jiǎn)介",max_length=100)
    content = models.TextField(verbose_name="正文")
    create_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True,auto_now_add=True)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = '新聞'
        verbose_name_plural = verbose_name

三、生成模型

定義好模型之后,繼續(xù)按照Django模型的使用方式,生成數(shù)據(jù)庫(kù)遷移,并執(zhí)行遷移:

python manage.py makemigrations app&
python manage.py migrate

命令的執(zhí)行信息如下所示:

和使用SQL數(shù)據(jù)庫(kù)一樣,Django為新項(xiàng)目創(chuàng)建了我們定義的模型還有一些認(rèn)證管理相關(guān)的表,這是否是真的呢,我們?nèi)ongoDB數(shù)據(jù)庫(kù)里面查看一下:

MongoDB數(shù)據(jù)庫(kù)里面果然生成了一系列的數(shù)據(jù)表。

四、訪問(wèn)Django Admin

經(jīng)過(guò)上面的演示,我們可以發(fā)現(xiàn)借助于Djongo模塊,我們可以無(wú)痛地以Django ORM的方式來(lái)使用MongoDB數(shù)據(jù)庫(kù)。那么作為Django重量級(jí)的admin后臺(tái)功能,是否能夠支持呢?我們繼續(xù)下面的演示。

首先,繼續(xù)在命令行中創(chuàng)建一個(gè)超級(jí)用戶(hù):

python manage.py createsuperuser

其過(guò)程與使用其他SQL數(shù)據(jù)庫(kù)無(wú)異:

接著,我們將剛剛創(chuàng)建的News()模型添加到admin中,在admin.py中進(jìn)行設(shè)置:

from app.models import News
admin.site.register(News)

隨后,運(yùn)行測(cè)試服務(wù)器:

五、操作數(shù)據(jù)

除此之外,我們最關(guān)心的還是對(duì)數(shù)據(jù)操縱是否方便。我們先在后臺(tái)界面嘗試一下新增數(shù)據(jù):

顯示新增成功了,我們?nèi)ongoDB里面看看是否存在:

六、最后

經(jīng)過(guò)上面初步的演示在Django中借助djongo模塊來(lái)使用MongoDB,可以發(fā)現(xiàn)其還是很方便的,優(yōu)點(diǎn)在于其改動(dòng)微乎其微,兼容性特別強(qiáng)。推薦大家在測(cè)試環(huán)境下充分地進(jìn)行測(cè)試使用,如果沒(méi)有問(wèn)題,那么可以謹(jǐn)慎在生產(chǎn)環(huán)境中進(jìn)行部署。更多的使用方法和問(wèn)題,大家可以訪問(wèn)djongo項(xiàng)目官網(wǎng):https://nesdis.github.io/djongo/ 和它的GitHub項(xiàng)目地址:https://github.com/nesdis/djongo/

以上就是使用Djongo模塊在Django中使用MongoDB數(shù)據(jù)庫(kù)的詳細(xì)內(nèi)容,更多關(guān)于在Django中使用MongoDB數(shù)據(jù)庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Django修改app名稱(chēng)和數(shù)據(jù)表遷移方案實(shí)現(xiàn)

    Django修改app名稱(chēng)和數(shù)據(jù)表遷移方案實(shí)現(xiàn)

    這篇文章主要介紹了Django修改app名稱(chēng)和數(shù)據(jù)表遷移方案實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python本地文件服務(wù)器實(shí)例教程

    python本地文件服務(wù)器實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于python本地文件服務(wù)器的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • python如何建立全零數(shù)組

    python如何建立全零數(shù)組

    在本篇內(nèi)容里小編給大家分享了關(guān)于python建立全零數(shù)組的方法,需要的朋友們跟著學(xué)習(xí)下吧。
    2020-07-07
  • Python求最小公倍數(shù)4種方法總結(jié)

    Python求最小公倍數(shù)4種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于Python求最小公倍數(shù)4種方法的相關(guān)資料,最小公倍數(shù)不可以像最大公約數(shù)那樣直接利用輾轉(zhuǎn)相除法求出,但可以借助輾轉(zhuǎn)相除法求得的最大公約數(shù)來(lái)求最小公倍數(shù),需要的朋友可以參考下
    2023-10-10
  • 詳細(xì)講解用Python發(fā)送SMTP郵件的教程

    詳細(xì)講解用Python發(fā)送SMTP郵件的教程

    這篇文章主要詳細(xì)講解了用Python發(fā)送SMTP郵件的教程,包括在郵件中添加圖片等文件,強(qiáng)烈推薦!需要的朋友可以參考下
    2015-04-04
  • Python3.5實(shí)現(xiàn)的羅馬數(shù)字轉(zhuǎn)換成整數(shù)功能示例

    Python3.5實(shí)現(xiàn)的羅馬數(shù)字轉(zhuǎn)換成整數(shù)功能示例

    這篇文章主要介紹了Python3.5實(shí)現(xiàn)的羅馬數(shù)字轉(zhuǎn)換成整數(shù)功能,涉及Python字符串遍歷與數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • 使用Python實(shí)現(xiàn)快速搭建本地HTTP服務(wù)器

    使用Python實(shí)現(xiàn)快速搭建本地HTTP服務(wù)器

    這篇文章主要介紹了如何使用Python快速搭建本地HTTP服務(wù)器,輕松實(shí)現(xiàn)一鍵 HTTP 文件共享,同時(shí)結(jié)合二維碼技術(shù),讓訪問(wèn)更簡(jiǎn)單,感興趣的小伙伴可以了解下
    2025-04-04
  • 對(duì)python指數(shù)、冪數(shù)擬合curve_fit詳解

    對(duì)python指數(shù)、冪數(shù)擬合curve_fit詳解

    今天小編就為大家分享一篇對(duì)python指數(shù)、冪數(shù)擬合curve_fit詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • python 自動(dòng)監(jiān)控最新郵件并讀取的操作

    python 自動(dòng)監(jiān)控最新郵件并讀取的操作

    這篇文章主要介紹了python 自動(dòng)監(jiān)控最新郵件并讀取的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 淺析Python中全局變量和局部變量的使用

    淺析Python中全局變量和局部變量的使用

    一個(gè)變量的名稱(chēng)除了可以代表不同的東西以外,也表示“哪里可以使用”這個(gè)變量,這篇文章將會(huì)介紹全局變量和局部變量的用法和差異,感興趣的可以了解下
    2021-06-06

最新評(píng)論

万源市| 大渡口区| 西乡县| 团风县| 若尔盖县| 延安市| 宁津县| 辽宁省| 即墨市| 松江区| 北辰区| 内黄县| 江源县| 资中县| 甘孜县| 呈贡县| 睢宁县| 沁源县| 内江市| 陈巴尔虎旗| 黄冈市| 呼图壁县| 民县| 天等县| 宁津县| 新昌县| 健康| 肃北| 嫩江县| 靖江市| 江陵县| 越西县| 桃江县| 通山县| 淮滨县| 新郑市| 舞钢市| 东阳市| 雷波县| 巴林左旗| 吐鲁番市|