前言
Django项目中连接MongoDB学习笔记
下载依赖
修改全局配置
- 在全局配置中的
DATABASES
配置后添加MongoClient
配置
<project_name>/<project_name>/settings.py1 2 3 4 5 6
| from pymongo import MongoClient
MONGOCLIENT = MongoClient( host='127.0.0.1', port='27017' )
|
MongoDB客户端
封装MongoDB客户端
- 在子应用根目录下创建
mongo_models.py
配置文件
<dbname>
:指定连接的数据库名
<collection_name>
:指定需要操作的集合名
<project_name>/<app_name>/mongo_models.py1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| from django.conf import settings
connect = settings.MONGOCLIENT['<dbname>'] class User(object): db = connect['<collection_name>'] @classmethod def insert(cls, **params): return cls.db.insert(params) @classmethod def get(cls, **params): return cls.db.find_one(params) @classmethod def gets(cls, **params): return cls.db.find(params) @classmethod def update(cls, _id, **params): return cls.db.update({'_id', _id}, {'$set': params})
|
使用MongoDB客户端
1 2 3
| from app.mongo_models import User
users = User.gets()
|
MongoDB表关联
下载依赖
1
| pip3 install mongoengine
|
创建一个数据表映射
- 在子应用根目录下创建
mongo_engine.py
配置文件
<dbname>
:指定连接的数据库名
属性:
require
:是否为空
max_length
:字符串长度
<project_name>/<app_name>/mongo_engine.py1 2 3 4 5 6
| from mongoengine import connect, Document, StringField, IntField
connect('<dbname>', host='127.0.0.1', port='27017') class User(Document): id = IntField(require=False) name = StringField(max_length=5)
|
多表关联
一对一
<project_name>/<app_name>/mongo_engine.py1 2 3 4 5 6 7 8 9 10 11
| from mongoengine import connect, Document, StringField, IntField, ReferenceField
connect('<dbname>', host='127.0.0.1', port='27017') class User(Document): id = IntField(require=False) name = StringField(max_length=5)
一对一关联 class OneToOne(Document): id = IntField(require=False) user = Reference(User)
|
增删改查
引入模块
- 在
views.py
中如果需要使用mongo_engine.py
中的类,需要先引入模块
<project_name>/<app_name>/views.py1
| from .mongo_engine import User
|
新增数据
方法一:直接使用内置的方法
1
| User.objects.create(字段名=字段值)
|
方法二:使用save()方法
1 2
| user = User(字段名=字段值) user.save()
|
完成
参考文献
哔哩哔哩——图灵学院教程