ODMantic 开源项目教程
项目介绍
ODMantic 是一个基于标准 Python 类型提示构建的 MongoDB 对象文档映射器(ODM)。它建立在 Pydantic 之上,用于模型定义和验证。ODMantic 的核心特性包括:
- 简单性:通过使用 Python 类型定义字段来定义模型,并使用 Python 比较运算符构建查询。
- 开发者体验:提供字段/方法自动完成、类型提示、数据验证,以及使用函数式 API 执行数据库操作。
- 完全类型化:利用静态分析减少运行时问题。
- 异步支持:与 ASGI 框架(如 FastAPI、Quart、Sanic、Starlette)兼容,但也适用于同步环境。
- 序列化:内置 JSON 序列化和 JSON 模式生成。
项目快速启动
安装
首先,使用 pip 安装 ODMantic:
pip install odmantic
定义第一个模型
以下是一个简单的示例,展示如何定义一个模型并进行基本操作:
from typing import Optional
from odmantic import Field, Model
class Publisher(Model):
name: str
founded: int = Field(ge=1440)
location: Optional[str] = None
# 创建实例
publisher = Publisher(name="Example Publisher", founded=1450, location="Example Location")
# 保存到数据库
from odmantic import AIOEngine
engine = AIOEngine()
await engine.save(publisher)
# 查询实例
found_publisher = await engine.find_one(Publisher, Publisher.name == "Example Publisher")
print(found_publisher)
应用案例和最佳实践
使用 FastAPI
ODMantic 可以与 FastAPI 无缝集成,以下是一个简单的 FastAPI 应用示例:
from fastapi import FastAPI
from odmantic import AIOEngine, Model
app = FastAPI()
engine = AIOEngine()
class Book(Model):
title: str
author: str
@app.post("/books/")
async def create_book(book: Book):
await engine.save(book)
return book
@app.get("/books/{title}")
async def get_book(title: str):
book = await engine.find_one(Book, Book.title == title)
return book
最佳实践
- 模型定义:确保模型字段类型和约束清晰明确。
- 异步操作:充分利用 ODMantic 的异步特性,提高应用性能。
- 错误处理:在数据库操作中添加适当的错误处理,确保应用稳定性。
典型生态项目
FastAPI + ODMantic 示例
GitHub 上有一个 FastAPI 和 ODMantic 的示例项目,展示了如何构建一个完整的后端应用:
FastAPI + ODMantic RealWorld Example
相关项目
- Pydantic:用于数据验证和设置。
- MongoDB:作为数据库后端。
- FastAPI:用于构建高性能的 API。
通过这些项目的结合使用,可以构建出高效、可扩展的后端服务。