欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django項目連接MongoDB的三種方法

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

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

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

2.MongoEngine: MongoEngine 是一個 Python 對象文檔映射器。它類似于關系數(shù)據(jù)庫中的 Object-Relational-Mapper。 MongoEngine 具有易于學習和使用的聲明式 API。

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

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

Django 和 MongoDB 設置

為了讓集成工作,你應該有一個 Django 和 MongoDB 設置。如果你的機器上有 Python,你可以使用 pip 安裝 Django。如果您希望在特定環(huán)境而不是整個系統(tǒng)中安裝 Django,您可以創(chuàng)建一個虛擬環(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。 要啟動 Django 項目,請轉到要啟動項目的文件夾并使用以下命令:

django-admin startproject <project_name>.

例如:

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

要創(chuàng)建應用程序,請使用以下命令:

python manage.py startapp myfirstapp

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

使用 PyMongo 連接 Django 和 MongoDB

PyMongo 對于將 JSON 數(shù)據(jù)寫入 MongoDB 非常有效,并且允許在 Python 代碼本身中使用 MongoDB 查詢。我們可以使用 PyMongo 像語法一樣檢索字典中的數(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,我們可以通過為連接實例指定正確的數(shù)據(jù)庫名稱來同時運行多個數(shù)據(jù)庫。

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

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

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']

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

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

MongoClient(‘localhost', 27017)

或者

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

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

使用 MongoEngine 連接 Django 和 MongoDB

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

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

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

pip install mongoengine

正如我們在上一節(jié)中看到的,在使用 PyMongo 時,我們必須在 settings.py 中注釋 DATABASES 部分。然后,要使用 MongoEngine,請?zhí)砑右韵聝热荩?/p>

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

使用 MongoEngine,我們必須在 Django 應用程序的 models.py 文件中定義一個模式。 MongoDB 是無模式的。該架構僅在應用程序級別執(zhí)行,從而使未來的任何更改都變得快速而輕松。 MongoEngine 類似于 Django 的默認 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()

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

使用 Djongo 連接 Django 和 MongoDB

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

安裝Djongo:

pip install djongo

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

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

如果您的數(shù)據(jù)庫不在本地主機上或受到保護,您還應該填寫 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 設置中添加了應用名稱:

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

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

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

將創(chuàng)建集合(應用程序中的 Django 模型——請注意,我們談論的是應用程序而不是項目)。您可以通過打開 Django Admin 來檢查相同的內容。 您可以使用管理 GUI 或手動將數(shù)據(jù)插入到集合中。 要使用管理控制臺,請打開瀏覽器并轉到 http://127.0.0.1:8000/admin(或 localhost)。您應該創(chuàng)建一個超級用戶以進入管理控制臺。如果您的應用程序中沒有任何模型,請按照有關如何創(chuàng)建和注冊模型的 Django 教程進行操作。 如果您希望 Djongo 免遷移,請在您的數(shù)據(jù)庫配置中設置 ENFORCE_SCHEMA: False。使用此設置,集合是動態(tài)創(chuàng)建的,Djongo 不會將 SQL 語句轉換為 MongoDB 命令。

Django 和 MongoDB 教程

(請隨意編寫代碼或從此 GitHub 存儲庫下載完整代碼。) 在本快速教程中,我們將演示如何使用 PyMongo 進行簡單的 CRUD 操作。為此,讓我們創(chuàng)建一個 PyMongo 會話:

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'})

接下來,您可以連接到您的 MongoDB Atlas 集群并進行驗證。

下一步 現(xiàn)在我們知道了連接 Django 和 MongoDB 的不同方式,我們必須為我們的項目選擇正確的方式。這些方法各有優(yōu)缺點。 例如,如果您是從頭開始,MongoEngine 是一個不錯的選擇,因為它可以輕松處理大量非結構化數(shù)據(jù)。如果您要在應用程序中編寫大量復雜的查詢,則應該使用 PyMongo。 如果您有一個 Django 項目需要從另一個數(shù)據(jù)庫遷移到 MongoDB,那么 Djongo 更合適,因為這需要最少的代碼更改。

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

相關文章

  • Python實現(xiàn)隨機游走的示例代碼

    Python實現(xiàn)隨機游走的示例代碼

    隨機游走是一個數(shù)學對象,稱為隨機或隨機過程,它描述了一條路徑,該路徑由一些數(shù)學空間上的一系列隨機步驟組成,下面我們就來學習一下Python如何實現(xiàn)隨機游走的吧
    2023-12-12
  • python運行或調用另一個py文件或參數(shù)方式

    python運行或調用另一個py文件或參數(shù)方式

    這篇文章主要介紹了python運行或調用另一個py文件或參數(shù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Python flask框架實現(xiàn)查詢數(shù)據(jù)庫并顯示數(shù)據(jù)

    Python flask框架實現(xiàn)查詢數(shù)據(jù)庫并顯示數(shù)據(jù)

    這篇文章主要介紹了Python flask框架實現(xiàn)查詢數(shù)據(jù)庫并顯示數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • pytorch中的squeeze函數(shù)、cat函數(shù)使用

    pytorch中的squeeze函數(shù)、cat函數(shù)使用

    這篇文章主要介紹了pytorch中的squeeze函數(shù)、cat函數(shù)使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Pycharm安裝scrapy及初始化爬蟲項目的完整步驟

    Pycharm安裝scrapy及初始化爬蟲項目的完整步驟

    因為入門python以來一直使用pycharm,所以對著黑白的DOS不習慣,所以此次來實現(xiàn)使用pycharm進行實現(xiàn)使用scrapy框架,下面這篇文章主要給大家介紹了關于Pycharm安裝scrapy及初始化爬蟲項目的完整步驟,需要的朋友可以參考下
    2022-08-08
  • 用Python Flask創(chuàng)建簡潔高效的URL短鏈接服務

    用Python Flask創(chuàng)建簡潔高效的URL短鏈接服務

    本文介紹了如何使用Python Flask框架創(chuàng)建URL短鏈接服務。通過詳細的步驟和代碼示例,讀者將學會如何搭建一個高效的URL縮短服務,包括生成短鏈接、重定向、還原長鏈接等功能。本文還介紹了如何使用Redis數(shù)據(jù)庫實現(xiàn)短鏈接的存儲和管理和如何優(yōu)化短鏈接的訪問速度和可靠性
    2023-04-04
  • Python實用工具FuckIt.py介紹

    Python實用工具FuckIt.py介紹

    這篇文章主要介紹了Python實用工具FuckIt.py介紹,FuckIt.py 使用了最先進的技術能夠使你的代碼不管里面有什么樣的錯誤,你只管 FuckIt,程序就能“正?!眻?zhí)行,兵來將擋水來土掩,需要的朋友可以參考下
    2019-07-07
  • Python一行代碼實現(xiàn)快速排序的方法

    Python一行代碼實現(xiàn)快速排序的方法

    排序算法是在高考或中考中出現(xiàn)頻率最多的點,所以大家要掌握,今天小編給大家?guī)砹送ㄟ^Python一行代碼實現(xiàn)快速排序的方法,感興趣的朋友跟隨小編一起看看吧
    2019-04-04
  • python網(wǎng)絡爬蟲之模擬登錄 自動獲取cookie值 驗證碼識別的具體實現(xiàn)

    python網(wǎng)絡爬蟲之模擬登錄 自動獲取cookie值 驗證碼識別的具體實現(xiàn)

    有時,我們需要爬取一些基于個人用戶的用戶信息(需要登陸后才可以查看)就要進行模擬登陸,因為驗證碼往往是作為登陸請求中的請求參數(shù)被使用,就需要識別驗證碼
    2021-09-09
  • Python的re模塊正則表達式操作

    Python的re模塊正則表達式操作

    這篇文章主要介紹了Python的re模塊正則表達式操作 的相關資料,需要的朋友可以參考下
    2016-05-05

最新評論