Ormar: Python ORM for Async PostgreSQL and SQLite

Ormar: Python ORM for Async PostgreSQL and SQLite

【免费下载链接】ormar python async orm with fastapi in mind and pydantic validation 【免费下载链接】ormar 项目地址: https://gitcode.com/gh_mirrors/or/ormar

项目介绍

Ormar是一款轻量级的Python异步ORM库,专为PostgreSQL和SQLite设计。它提供了简洁的模型定义方式,支持类型注解,以及流畅的查询接口,旨在简化在异步应用中对数据库的操作。通过利用FastAPI等现代Web框架的async特性,Ormar能够高效地处理数据库交互,增强应用性能。

项目快速启动

安装Ormar

首先,你需要安装Ormar。这可以通过pip完成:

pip install ormar[postgresql]  # 对于PostgreSQL的支持
# 或者
pip install ormar[sleepycat]  # 对于SQLite的支持

创建模型

定义一个简单的数据模型,比如一个User模型:

from pydantic.main import BaseModel
from ormar.models import Model
from ormar.fields import Integer, String, Meta


class User(Model):
    class Meta(Meta):
        database = "your_database_connection"  # 需要替换为你的数据库连接字符串
        tablename = "users"

    id: int = Integer(primary_key=True)
    name: str = String(max_length=50)

快速插入数据

使用异步方式插入一条用户记录:

from typing import AsyncGenerator
from fastapi import FastAPI
from sqlalchemy.ext.asyncio import create_async_engine
from ormar import EventLoopManager

app = FastAPI()
engine = create_async_engine("postgresql+asyncpg://user:password@localhost/dbname")
manager = EventLoopManager()

@app.on_event("startup")
async def startup():
    await manager.connect(engine)

@app.on_event("shutdown")
async def shutdown():
    await manager.disconnect()

@app.post("/users/")
async def create_user(name: str):
    user = User(name=name)
    await user.save()  # 异步保存到数据库

应用案例和最佳实践

Ormar适用于构建高性能的异步Web应用,尤其是在结合FastAPI时。其最佳实践包括充分利用Pydantic模型进行输入验证,利用Ormar的事务管理功能来保证数据一致性,以及在多并发环境中妥善管理数据库连接。

例如,在处理复杂查询时,可以利用其链式调用来优雅地构造查询条件,确保代码的可读性。

典型生态项目

Ormar通常与现代异步框架如FastAPI结合使用,以构建RESTful API服务。此外,它也可以与AIOHTTP等其他异步框架一起工作,扩展到更多类型的异步应用场景中。在生态系统内,Ormar配合像SQLAlchemy的异步适配器,进一步丰富了Python异步编程中对于关系型数据库操作的选择,为开发者提供灵活且高效的开发体验。


本教程仅作为一个简要介绍,更详细的使用方法、高级特性和最佳实践,请参考Ormar的官方文档和GitHub仓库中的示例。

【免费下载链接】ormar python async orm with fastapi in mind and pydantic validation 【免费下载链接】ormar 项目地址: https://gitcode.com/gh_mirrors/or/ormar

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值