fastapi-extend


Namefastapi-extend JSON
Version 0.1.3 PyPI version JSON
download
home_page
Summaryfastapi extend
upload_time2024-01-10 12:46:00
maintainer
docs_urlNone
authorlvyunze
requires_python>=3.8
license
keywords fastapi
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ### 1、install
``` pip install fastapi_extend ```
### 2、use
```python
from sqlalchemy import Column, String, Integer, Float, DateTime
from sqlalchemy.ext.declarative import declarative_base  # ORM(对象关系映射)的基类
Base = declarative_base()
from fastapi_extend.serializer import Serializer

class Trade(Base):
    __tablename__ = "trade"
    id = Column(Integer, primary_key=True)
    account = Column(String(20), default=None, nullable=False)
    trade_datetime = Column(DateTime)
    volume = Column(Float, default=None, nullable=False)
    price = Column(Float, default=0, nullable=False)
    order_id = Column(String(20))

class TradeSer(Serializer):
    account: str
    trade_datetime = Column(DateTime)
    volume: float
    price: float
    order_id: str
```
#### 1)、Pagination
```python
from fastapi_extend.pagenator import PageNumberPagination

from pydantic import validator
from sqlalchemy import Column, String, Integer, Float, DateTime

paginator = PageNumberPagination(
            params,
            Trade,
            TradeSer,
            exclude={"start", "end"},
        )
query = paginator.get_queryset()
if params.start:
    query = query.where(Trade.trade_datetime >= params.start)
if params.end:
    query = query.where(Trade.trade_datetime <= params.end)
data = await paginator.paginate_query(query, session)
```
#### 2)、Serializer
```python
from fastapi_extend.serializer import Serializer
from pydantic import validator

class TradeSer(Serializer):
    account: str
    volume: float
    price: float
    order_id: str

    @validator("price")
    def price_add(cls, v):
        return v + 10

data_ser = TradeSer.dump(result.scalars(), many=True)

```

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "fastapi-extend",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "fastapi",
    "author": "lvyunze",
    "author_email": "17817462542@163.com",
    "download_url": "",
    "platform": null,
    "description": "### 1\u3001install\n``` pip install fastapi_extend ```\n### 2\u3001use\n```python\nfrom sqlalchemy import Column, String, Integer, Float, DateTime\nfrom sqlalchemy.ext.declarative import declarative_base  # ORM(\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04)\u7684\u57fa\u7c7b\nBase = declarative_base()\nfrom fastapi_extend.serializer import Serializer\n\nclass Trade(Base):\n    __tablename__ = \"trade\"\n    id = Column(Integer, primary_key=True)\n    account = Column(String(20), default=None, nullable=False)\n    trade_datetime = Column(DateTime)\n    volume = Column(Float, default=None, nullable=False)\n    price = Column(Float, default=0, nullable=False)\n    order_id = Column(String(20))\n\nclass TradeSer(Serializer):\n    account: str\n    trade_datetime = Column(DateTime)\n    volume: float\n    price: float\n    order_id: str\n```\n#### 1\uff09\u3001Pagination\n```python\nfrom fastapi_extend.pagenator import PageNumberPagination\n\nfrom pydantic import validator\nfrom sqlalchemy import Column, String, Integer, Float, DateTime\n\npaginator = PageNumberPagination(\n            params,\n            Trade,\n            TradeSer,\n            exclude={\"start\", \"end\"},\n        )\nquery = paginator.get_queryset()\nif params.start:\n    query = query.where(Trade.trade_datetime >= params.start)\nif params.end:\n    query = query.where(Trade.trade_datetime <= params.end)\ndata = await paginator.paginate_query(query, session)\n```\n#### 2)\u3001Serializer\n```python\nfrom fastapi_extend.serializer import Serializer\nfrom pydantic import validator\n\nclass TradeSer(Serializer):\n    account: str\n    volume: float\n    price: float\n    order_id: str\n\n    @validator(\"price\")\n    def price_add(cls, v):\n        return v + 10\n\ndata_ser = TradeSer.dump(result.scalars(), many=True)\n\n```\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "fastapi extend",
    "version": "0.1.3",
    "project_urls": null,
    "split_keywords": [
        "fastapi"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3cccabe6bb9ba2b1e299a4fe7ef4446550f4ec373fd34a2143b0764cb6f30e04",
                "md5": "12c39eb607d969e8222a8adc342553c1",
                "sha256": "dd5d65d6dbc4c2e0c7439530a0593a0807244513f6f7bbbb41584a19745867be"
            },
            "downloads": -1,
            "filename": "fastapi_extend-0.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "12c39eb607d969e8222a8adc342553c1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 9466,
            "upload_time": "2024-01-10T12:46:00",
            "upload_time_iso_8601": "2024-01-10T12:46:00.458927Z",
            "url": "https://files.pythonhosted.org/packages/3c/cc/abe6bb9ba2b1e299a4fe7ef4446550f4ec373fd34a2143b0764cb6f30e04/fastapi_extend-0.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-10 12:46:00",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "fastapi-extend"
}
        
Elapsed time: 0.60355s