上一篇文章,我們在電腦上安裝了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 looploop = asyncio.get_event_loop()
insert_user result:
6653325dfba58f88883ecd31
VS Code 插件
可以在 VS Code 里安裝這個插件,避免非得用命令行查看數據庫,也比官方性能低下的 mongo compass 好用:
第一次運行需要輸入連接字符串,直接復制命令行連接顯示的那一串就行:
就可以看到我們存入的數據: