Django项目连接MongoDB的三种方法

目录
  • Django 和 MongoDB 设置
    • 安装:
    • 创建:
    • 激活:
  • 使用 PyMongo 连接 Django 和 MongoDB
  • 使用 MongoEngine 连接 Django 和 MongoDB
  • 使用 Djongo 连接 Django 和 MongoDB
  • Django 和 MongoDB 教程

有三种方法连接Django到MongoDB数据库

1.PyMongo:PyMongo 是 MongoDB 与 Django 交互的标准驱动程序。这是在 Python 中使用 MongoDB 的官方和首选方式。 PyMongo 提供了执行所有数据库操作的功能,例如搜索、删除、更新和插入。由于 PyMongo 可与 PyPI 一起使用,您可以使用 pip 命令快速安装它。

2.MongoEngine: MongoEngine 是一个 Python 对象文档映射器。它类似于关系数据库中的 Object-Relational-Mapper。 MongoEngine 具有易于学习和使用的声明式 API。

3.Djongo:如果您正在使用 SQL 这样的关系型数据库并希望迁移到 MongoDB,那么您可以使用 Djongo。在不更改 Django ORM 的情况下,Djongo 将所有 SQL 查询转换为 MongoDB 语法查询。

哪种方法连接到 Django MongoDB 更好呢?

Django 和 MongoDB 设置

为了让集成工作,你应该有一个 Django 和 MongoDB 设置。如果你的机器上有 Python,你可以使用 pip 安装 Django。如果您希望在特定环境而不是整个系统中安装 Django,您可以创建一个虚拟环境。根据您的 Python 版本使用 pip/pip3:

安装:

Windows:

pip install virtualenvwrapper-win

Mac OS / Linux:

pip install virtualenvwrapper

创建:

Windows:

mkvirtualenv MyProjectEnvt

Mac OS / Linux:

virtualenv MyProjectEnvt

激活:

Mac OS / Linux

source MyProjectEnvt/bin/activate

Windows:

workon MyProjectEnvt

要停用虚拟环境,您只需键入命令deactivate。 现在使用 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

要创建应用程序,请使用以下命令:

python manage.py startapp myfirstapp

如果您使用的是 Python 版本 >= 3.0,请将命令中的 python 替换为 python3。 在应用程序内部,我们可以有许多模型将映射到 MongoDB 中的集合和文档。 启动项目后,所有文件都将在项目文件夹中可用。使用 python manage.py runserver 命令启动服务器。 您的 Django 设置现已完成。 如果您还没有设置 MongoDB,请使用 MongoDB Atlas 来充分利用云托管。 Atlas 与所有主要的云提供商无缝合作。

使用 PyMongo 连接 Django 和 MongoDB

PyMongo 对于将 JSON 数据写入 MongoDB 非常有效,并且允许在 Python 代码本身中使用 MongoDB 查询。我们可以使用 PyMongo 像语法一样检索字典中的数据。 使用 pip/pip3 命令轻松安装 PyMongo:

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

如果您使用的是虚拟环境,则必须在 ..\venv\Lib\site-packages 文件夹中安装 pymongo。 此外,安装 dnspython 以使用 mongodb+srv:// URI 与命令:

pip install dnspython

使用 PyMongo,我们可以通过为连接实例指定正确的数据库名称来同时运行多个数据库。

让我们创建一个示例 pymongo 会话。为此,有两种方法:

1.我们可以在 utils 文件中创建一个客户端,任何想要与 MongoDB 交互的视图都可以使用它。在您的项目文件夹(与 manage.py 相同的位置)中创建一个 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/')

由于我们已经在此处创建了客户端,因此我们需要在 settings.py 文件中注释 DATABASES 部分。使用三重引号注释相同的内容。

使用 MongoEngine 连接 Django 和 MongoDB

MongoEngine 是 PyMongo 之上的 ORM 层。因此,您的系统仍然需要 PyMongo (>=3.4) 才能使用 MongoEngine。

使用 MongoEngine 连接 Django 和 MongoDB,您可以使用 ListField 和 DictField 等字段来处理巨大的非结构化 JSON 数据。

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

pip install mongoengine

正如我们在上一节中看到的,在使用 PyMongo 时,我们必须在 settings.py 中注释 DATABASES 部分。然后,要使用 MongoEngine,请添加以下内容:

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

使用 MongoEngine,我们必须在 Django 应用程序的 models.py 文件中定义一个模式。 MongoDB 是无模式的。该架构仅在应用程序级别执行,从而使未来的任何更改都变得快速而轻松。 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 的改进,因为开发人员无需编写冗长的查询。它将 Python 对象映射到 MongoDB 文档,即对象文档映射 (ODM)。 Djongo 确保只有干净的数据才能进入数据库。通过使用 Djongo 执行完整性检查、应用验证等,无需修改现有的 Django ORM。

安装Djongo:

pip install djongo

现在,转到您的项目文件夹(例如 MyFirstDjangoProj),并打开 settings.py 文件。您可以在 Textpad、Python IDE 或任何编辑器上对其进行编辑。搜索 DATABASES,并将设置更改为指向 MongoDB。 ENGINE 将是 djongo,数据库名称 (NAME) 将是您的 MongoDB 数据库名称。

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

如果您的数据库不在本地主机上或受到保护,您还应该填写 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',
]

现在我们有了 Django 项目(和应用程序),您可以使用以下命令在 MongoDB 中创建集合:

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

将创建集合(应用程序中的 Django 模型——请注意,我们谈论的是应用程序而不是项目)。您可以通过打开 Django Admin 来检查相同的内容。 您可以使用管理 GUI 或手动将数据插入到集合中。 要使用管理控制台,请打开浏览器并转到 http://127.0.0.1:8000/admin(或 localhost)。您应该创建一个超级用户以进入管理控制台。如果您的应用程序中没有任何模型,请按照有关如何创建和注册模型的 Django 教程进行操作。 如果您希望 Djongo 免迁移,请在您的数据库配置中设置 ENFORCE_SCHEMA: False。使用此设置,集合是动态创建的,Djongo 不会将 SQL 语句转换为 MongoDB 命令。

Django 和 MongoDB 教程

(请随意编写代码或从此 GitHub 存储库下载完整代码。) 在本快速教程中,我们将演示如何使用 PyMongo 进行简单的 CRUD 操作。为此,让我们创建一个 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 集群并进行验证。

下一步 现在我们知道了连接 Django 和 MongoDB 的不同方式,我们必须为我们的项目选择正确的方式。这些方法各有优缺点。 例如,如果您是从头开始,MongoEngine 是一个不错的选择,因为它可以轻松处理大量非结构化数据。如果您要在应用程序中编写大量复杂的查询,则应该使用 PyMongo。 如果您有一个 Django 项目需要从另一个数据库迁移到 MongoDB,那么 Djongo 更合适,因为这需要最少的代码更改。

到此这篇关于Django项目连接MongoDB的三种方法的文章就介绍到这了,更多相关Django连接MongoDB内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用Djongo模块在Django中使用MongoDB数据库

    目录 一.安装与配置 二.定义模型 三.生成模型 四.访问Django Admin 五.操作数据 六.最后 一.安装与配置 Djongo的项目官方地址为:https://nesdis.github.io/djongo/,我们可以通过pip命令直接安装djongo: pip install djongo 在安装完成之后,我们就可以直接在Django中配置MongoDB数据库的信息了. 在正常情况下,我们的Django项目中数据库在settings.py文件中进行配置,其一般配置如下所示: DATA

  • Django集成MongoDB实现过程解析

    将Django与MongoDB集成 在不更改Django ORM的情况下,将MongoDB用作Django项目的后端数据库.使用Django Admin在MongoDB中添加和修改文档.通过仅添加一行代码,开始将Django与MongoDB结合使用. 1.pip安装djongo 2.设置setting文件 DATABASES = { 'default': { 'ENGINE': 'djongo', 'NAME': 'your-db-name', } } 需要注意的地方: 1.Python 3.6

  • Django项目连接MongoDB的三种方法

    目录 Django 和 MongoDB 设置 安装: 创建: 激活: 使用 PyMongo 连接 Django 和 MongoDB 使用 MongoEngine 连接 Django 和 MongoDB 使用 Djongo 连接 Django 和 MongoDB Django 和 MongoDB 教程 有三种方法连接Django到MongoDB数据库 1.PyMongo:PyMongo 是 MongoDB 与 Django 交互的标准驱动程序.这是在 Python 中使用 MongoDB 的官方和

  • vue项目刷新当前页面的三种方法

    想必大家在刨坑vue的时候也遇到过下面情形:比如在删除或者增加一条记录的时候希望当前页面可以重新刷新或者如下面这种: 如果希望点击确定的时候,Dialog 对话框关闭的时候,当前http://localhost:9530/#/supplier/supplierAll页面可以重新刷新下 那么表格的数据可以重新加载,Dialog 对话框设置的数据可以在确定后刷新出现在页面上 这时候我们最直接的思维就是想到下面这种: 但是,试过的会发现用vue-router重新路由到当前页面,页面是不进行刷新的,根本

  • Java项目实现定时任务的三种方法

    目录 1 使用java.util.Timer 2 使用ScheduledExecutorService 3 使用Spring Task 总结 1 使用java.util.Timer 这种方式的定时任务主要用到两个类,Timer 和 TimerTask,使用起来比较简单.其中 Timer 负责设定 TimerTask 的起始与间隔执行时间. TimerTask是一个抽象类,new的时候实现自己的 run 方法,然后将其丢给 Timer 去执行即可. 代码示例: import java.time.L

  • vue项目刷新当前页面的三种方式(重载当前页面数据)

    目录 vue项目刷新当前页面的三种方式(重载当前页面数据) 一.this.$router.go(0) 二.location.reload() 三.用provide / inject 组合 PS:vue项目刷新当前页面的三种方法 vue项目刷新当前页面的三种方式(重载当前页面数据) 一.this.$router.go(0) 相当于F5刷新,这种方法虽然代码很少,只有一行,但是体验很差.页面会一瞬间的白屏,体验不是很好 二.location.reload() 这种也是一样,画面一闪,体验不是很好,相

  • Tomcat 部署项目的三种方法详解

    1.下载 Tomcat 服务器 ①.官网下载地址:http://tomcat.apache.org/ ②.Tomcat 8.5.11 32位/64位 官方免费版下载地址:http://www.jb51.net/softs/537911.html 2.启动并部署 Tomcat 服务器 ①.解压 tomcat 安装包到一个非中文目录下 ②.配置环境变量.JAVA_HOME(指向 JDK 安装的根目录) ③.双击 apache-tomcat-6.0.16\bin 目录下的 startup.bat,启动

  • python实现字符串连接的三种方法及其效率、适用场景详解

    python字符串连接的方法,一般有以下三种: 方法1:直接通过加号(+)操作符连接 website = 'python' + 'tab' + '.com' 方法2:join方法  listStr = ['python', 'tab', '.com'] website = ''.join(listStr) 方法3:替换  website = '%s%s%s' % ('python', 'tab', '.com') 下面再来说一下三种方法的不同 方法1,使用简单直接,但是网上不少人说这种方法效率低

  • .net MVC 连接数据本地数据库三种方法总结

    .net MVC 连接数据本地数据库三种方法 <appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="PreserveLoginUrl" value="true" />

  • vue项目退出登录清除store数据的三种方法

    目录 方法一:(不友好,页面会白屏,不推荐使用) 方法二 : (不会出现白屏,推荐使用) 方法三 : vuex清除token (不会出现白屏,推荐使用) 总结 方法一:(不友好,页面会白屏,不推荐使用) 在退出登录的loginOut 方法里面: window.location.reload() 方法二 : (不会出现白屏,推荐使用) 利用v-if控制router-view,在根组件APP.vue中实现一个刷新方法 <template> <router-view v-if="is

  • VS中C#读取app.config数据库配置字符串的三种方法

    关于VS2008或VS2005中数据库配置字符串的三种取法 VS2008建立Form程序时,如果添加数据源会在配置文件 app.config中自动写入连接字符串,这个字符串将会在你利用DataSet,SqlDataAparter,SqlConnection等控件时如影随行地提示你让去选择,或者是新建字符串.如果要用代码的方式取得这个字符串则有三种方式: app.config内容: <?xml version="1.0" encoding="utf-8" ?&g

  • Python 连接 MySQL 的几种方法

    尽管很多 NoSQL 数据库近几年大放异彩,但是像 MySQL 这样的关系型数据库依然是互联网的主流数据库之一,每个学 Python 的都有必要学好一门数据库,不管你是做数据分析,还是网络爬虫,Web 开发.亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的几种方式,你可以在实际开发过程中根据实际情况合理选择. 1.MySQL-python MySQL-python 又叫 MySQLdb,是 Python 连接 M

随机推荐