A FastAPI plugin that quickly builds CRUD-API based on SQLAlchemy
Project description
FastAPIX
FastAPIX 为 FastAPI 提供的基于 SQLAlchemy ORM 快速构建数据库操作的插件.
V1.0 后,将去除对pydantic v1的兼容
安装
pip3 install fastapix-py
fastapi
from fastapi import FastAPI
app = FastAPI()
离线挂载 openapi
from fastapix import offline
offline.register_offline_openapi(app)
修改异常返回结果
from fastapix import handlers
handlers.register_exception_handlers(app)
ORM模型
from uuid import UUID, uuid4
from datetime import datetime
from typing import Annotated
from pydantic.functional_serializers import PlainSerializer
from fastapix.crud import SQLModel, Field
from fastapix.common.serializer import convert_datetime_to_chinese
# 自定义类型序列化函数 pydantic V2+
# from fastapix.crud.mixins import CreateTimeMixin 默认以采用 `DATETIME` 序列化
# pydantic V2+
DATETIME = Annotated[datetime, PlainSerializer(convert_datetime_to_chinese)]
# 继承 SQLModel
class Category(SQLModel, table=True):
"""
测试
"""
id: UUID = Field(default_factory=uuid4, primary_key=True, nullable=False, create=False, update=False)
name: str = Field(..., title='名称', max_length=100, index=True, nullable=False, unique=True, update=False)
create_time: DATETIME = Field(default_factory=datetime.now, title="Create Time", create=False, update=False)
#
DATETIME
TIMESTAMP
已内置于fastapix.crud.mixins
, 如需其他自定义序列化方式,根据 pydantic 版本,采用不同方式定义
创建连接
AsyncDatabase
from sqlalchemy.ext.asyncio import AsyncEngine, create_async_engine
database_url = 'sqlite+aiosqlite:///test.db'
engine: AsyncEngine = create_async_engine(database_url)
Database
from sqlalchemy.engine import create_engine, Engine
database_url = 'sqlite+aiosqlite:///test.db'
engine: Engine = create_engine(database_url)
注册
from fastapix.crud import SQLAlchemyCrud, EngineDatabase
database = EngineDatabase(engine)
cate_router = SQLAlchemyCrud(Category, database).router_manager()
# 挂载中间件
app.add_middleware(database.asgi_middleware)
# 挂载路由
app.include_router(cate_router.create_object_router())
app.include_router(cate_router.read_object_router())
app.include_router(cate_router.update_object_router())
app.include_router(cate_router.delete_object_router())
OpenAPI Docs
## 查询条件Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
File details
Details for the file fastapix_py-0.7.7-py3-none-any.whl
.
File metadata
- Download URL: fastapix_py-0.7.7-py3-none-any.whl
- Upload date:
- Size: 2.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04cd1cf5f12c922ed562e0d4b4d66e77b9c154736306ce434b43b6000e89b113 |
|
MD5 | a963dbd96b6f2826ee9295ea70f1cac2 |
|
BLAKE2b-256 | cea6f01b5bc34414edf161dfcb757c6c7fdd236bfbbaedaa71fc90a70204a46a |