上一篇文章,我们在电脑上安装了mongodb数据库。这篇文章,我们在fastapi后端使用motor操作mongodb
如果你还没看过上一篇文章,链接在这里:【MongoDB】安装与使用
安装 motor
motor 是一个用于操作 mongodb 数据库的 python 库,它封装了 pymongo 库,让其使用起来更加方便。执行下面的命令安装 motor:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple motor
我们先使用命令行访问 mongodb 数据库,在其中新建数据库和集合(也就是 MySQL 的表):
use sunrain //新建 sunrain 数据库
db.createCollection("users") //新建 user 集合
规划项目结构
虽然我们可以把所有的内容都写在 main.py 文件里,但这显然会导致后续维护变得困难。因此我们打算新建一个 python 文件,和 main 文件在一个文件夹下,取名为 dao.py
import motor.motor_asyncio
import asyncio
# 连接mongodb
client = motor.motor_asyncio.AsyncIOMotorClient('localhost', 27017)
# 访问 sunrain 数据库
db_sunrain = client['sunrain']
# 访问 users 集合(表)
collection_users = db_sunrain['users']
所谓增删改查,先从最简单的增开始:
async def insert_user():
document_user = {'name': 'bluebonnet27', 'age': 24}
result_insert_user = await collection_users.insert_one(document_user)
print('insert_user result: ')
print(result_insert_user.inserted_id)
注意此处方法需要使用异步,insert_one只能插入一条数据。
写完代码后,可以利用 asyncio 库测试我们的方法:
if __name__ == "__main__":
print("TEST: DAO")
loop = asyncio.get_event_loop()
loop.run_until_complete(insert_user())
顺利的话,控制台执行这个文件,有如下输出:
D:\Codes\CPP\VSCodeProjects\2024\March\vueProject\SunrainServer\dao.py:17: DeprecationWarning: There is no current event loop
loop = asyncio.get_event_loop()
insert_user result:
6653325dfba58f88883ecd31
VS Code 插件
可以在 VS Code 里安装这个插件,避免非得用命令行查看数据库,也比官方性能低下的 mongo compass 好用:
第一次运行需要输入连接字符串,直接复制命令行连接显示的那一串就行:
就可以看到我们存入的数据: