MongoDB 与 Django
TLDR: Django 不支持像 MongoDB 这样的 NoSQL 数据库,但这说明了它是如何实现的。
Python 中的虚拟环境
在安装Django之前,先了解一下venv,一个Python的虚拟环境。venv是一个独立的目录,包含 Python 安装和外部包。将其视为任何其他虚拟环境。他们应该 NOT 提交到您的 repo(您可以将其放在目录之外或将其添加到.gitignore)!
使用以下命令创建venv:
python3 -m venv name-of-virtual-env-directory
这将创建name-of-virtual-env-directory以及 Python 安装和项目所需的任何包。
处理虚拟环境的最佳实践是将它们全部存储在同一个地方。因此,您可能希望将它们存储在您的主目录或存储 Git 存储库的任何位置。 IE。:
python3 -m venv ~/.virtualenvs/project-virtual-env
之后,您可以使用以下命令激活虚拟环境:
source ~./virtualenvs/project-virtual-env/bin/activate
每当您使用pip安装软件包时,它都会安装在您所在的活动虚拟环境中。
pip list
给出 venv 中所有已安装软件包的列表。
将依赖项安装到虚拟环境后,请确保在完成后将其停用。使用命令:
deactivate
pip freeze与pip list类似,但也给出了具体的版本号。将该列表的内容复制到reqirements.txt文件(提交到版本控制 AKA Git)中。然后,当用户克隆您的项目时,他们会运行以下命令来安装所有项目依赖项。
pip install -r requirements.txt
将requirements.tx视为 NPM 中使用的package.json。
| 另一个选项:virtualenv 是比 venv 更受欢迎的选项。在这里查看使用它。
MongoDB
MongoDB 是一个 NoSQL、非关系、无模式、基于文档的数据库。基于文档意味着数据存储在键值对中,想想 JSON。查看下表以了解 SQL 和 NoSQL 之间的比较。
话题
SQL
无SQL
类型
基于表的数据库
基于文档,例如键值对
架构
使用架构
不需要架构
缩放
不喜欢(垂直)
首选缩放(水平)
酸
最适合酸属性
不符合 ACID

这显示了您需要如何使用关系数据库创建模式,以及如何在 MongoDB 中不需要它。
姜戈
MongoDB 没有得到 Django 的正式支持,Django 是一个流行的 Python 网络框架。 PostresSQL、MySQL、Oracle 和 SQLite 是。但是可以按照MongoDB 文档执行此操作。这是因为,通常,您会希望在 Django 中使用关系数据库。
Flask 是 Python 中另一个流行的 Web 框架。与 NoSql 数据库一起使用是更好的选择。您还可以使用django-nonrel,这是一个社区分支,用于向 Django 添加 NoSQL 支持。但是,它不受支持并使用旧的 Django 版本。
有 3 个选项可以使用 Django 连接到 MongoDB。 Pymongo、MongoEngine 和 Djongo。但是通过使用 PyMongo 驱动程序,您可以连接 MongoDB 和 Django。这方面的说明在下一节中。
激活虚拟环境后(从上面),安装Django可以通过以下方式完成:
python -m install Django
查看 Django 版本:
python -m django --version
进入cd目录,输入命令创建项目:
django-admin startproject name-of-project
要启动服务器和应用程序:
python manage.py runserver
之前,我们创建了一个名为name-of-project的项目。我们还可以在项目中创建应用程序。项目可以有多个应用程序(将应用程序视为模块)。使用这个命令:
python manage.py startapp name-of-app
目录
概括
项目名称
根目录(可以任意命名)
»manage.py
CLI 实用程序
» 项目名称
Python 包的目录(例如 name-of-project.settings)
» 初始化.py
告诉 Python 这个目录是一个包
»settings.py
Django 的设置
»urls.py
目录和 URL 路由
»asgi.py
ASGI Web 服务器的入口点
»wsgi.py
WSGI Web 服务器的入口点
PyMongo
根据MongoDB docs,Pymongo 是在 Django 中使用 MongoDB 的首选方式。但如上所述,还有一些其他选项使用 MongoEngine 和 Djongo。
安装 PyMongo :
python3 -m pip install pymongo
对于 MongoDB 的安装,最好安装一些可选的依赖项:
pip install pymongo[snappy,gssapi,srv,tls]
以及这个(用于使用 mongodb+srv://):
pip install dnspython
有几种方法可以连接到我们的数据库会话。其中之一涉及在 PROJECT 文件夹(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
使用 env 变量隐藏用户名和密码以防止暴露。这超出了本教程的范围,但是如果您有任何问题,请尽管提问。
然后,在app目录下,找到views.py。从这里可以访问函数get_db_handle()。
现在,我们的 MongoDB 客户端已连接!如果您想了解如何使用 MongoEngine 或 Djongo 进行设置,只需查看此教程。
了解更多信息:
-
在 Python 中使用 venv 的虚拟环境
-
在 Python 中使用 virtualenv 的虚拟环境
-
安装 Django
-
Django教程1-7
-
Django 设计哲学
-
PyMongo 文档
-
MongoEngine 文档
谢谢阅读!考虑关注我了解更多!
我的博客推特开发者社区HashNode10410 zwz010z1006zw01中
更多推荐
所有评论(0)