python中MongoEngine简单使用
1 MongoEngine介绍
MongoEngine是一个处理MongoDB的对象文档映射器。pymongo是非面向对象的方式操作数据。
MongoEngine开发文档
# 开发文档
http://docs.mongoengine.org/index.html
# 数据类型
http://docs.mongoengine.org/apireference.html#fields
# 初始化映射器类,包括设置meta属性
http://docs.mongoengine.org/guide/defining-documents.html
python安装mongoengine
pip install mongoengine -i https://pypi.tuna.tsinghua.edu.cn/simple
2 安装MongoDB
2.1 安装MongoDB
# 创建MongoDB
# --auth:设置数据库登录权限
sudo docker run -itd \
--restart always \
--name my_mongodb \
--privileged=true \
-p 27017:27017 \
-v /home/mongodb/configdb:/data/configdb \
-v /home/mongodb/data:/data/db \
-v /home/mongodb/backup:/data/backup \
mongo:4.2.8 --auth
2.2 初始化数据库
# (1)进入mongo Shell
# --host 127.0.0.1可以省略
mongo --host 127.0.0.1 --port 27017
# (2)切换数据库
use admin
# (3)创建用户
# 用户名;root, 密码:123456
# 注意:此处的账号和密码会管理所有的数据库
db.createUser({user:'root', pwd:'123456', roles:[
{role:'clusterAdmin', db:'admin'},
{role:'dbAdminAnyDatabase', db:'admin'},
{role:'userAdminAnyDatabase', db:'admin'},
{role:'readWriteAnyDatabase', db:'admin'},
{role:'root', db:'admin'}
]})
# (4)授权
db.auth("root", "123456")
# (5)创建应用数据库和用户
# 连接库直接使用相应库中的用户名称即可,如果仅仅使用appdb库,直接使用user=mason,pwd=123456连接即可
use appdb
db.createUser({user:'mason', pwd:'123456', roles:[ {role:'dbOwner', db:'appdb'} ]})
# (6)创建数据库并插入数据
# 查看所有数据库
show databases
# 查看当前数据库
db
# 切换数据库
use appdb
3 python源代码
使用mongoengine的EmbeddedDocument和Document向索引中插入文档
from mongoengine import connect, Document, StringField, EmbeddedDocument, IntField, EmbeddedDocumentField
# 连接MongoDB数据库
connect(
db="appdb",
host="192.168.108.200",
port=27017,
username="mason",
password="123456",
)
# 设置嵌入式文档类
class Author(EmbeddedDocument):
# 注意:参数“comment”是随便定义的,只要不与默认参数冲突即可
name = StringField(comment="用户姓名")
age = IntField(comment="用户年龄")
# 实体类
class Article(Document):
# 注意:参数“comment”是随便定义的,只要不与默认参数冲突即可
# 注意:尽量不用关键字“id”,会与mongodb中的“_id”冲突
# id = StringField(required = True, comment="文献编号")
title = StringField(required = True, comment="文献标题")
summary = StringField(required=True, max_length = 500, comment="文献摘要")
keywords = StringField(required=True, comment="文献关键词")
# 使用嵌入式文档
author = EmbeddedDocumentField(Author, comment="作者信息")
# 设置文档的基本信息
meta = {
"comment": "文献集合",
# 设置集合
"collection": "article"
}
# 设置数据
article = Article()
article.title = "文献标题1"
article.summary = "文献摘要1"
article.keywords = "关键词1"
author = Author()
author.name = "张三"
author.age = 10
article.author = author
# 添加数据
article.save()
4 截图
查看索引中的数据