123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- from datetime import datetime
- from typing import List, Optional
- from pydantic import BaseModel, ValidationError
- from sqlalchemy import Column, Integer, String
- from sqlalchemy.dialects.postgresql import ARRAY
- class User(BaseModel):
- id: int
- name: str = "John Snow"
- create_time: Optional[datetime] = None
- friends: List[int] = []
- external_data = {
- "id": "123",
- "create_time": "2020-12-22 12:22",
- "friends": [1, 2, "3"], # "3"是可以int("3")的
- }
- user = User(**external_data)
- print(user.id, user.friends)
- print(repr(user.create_time))
- print(user.dict())
- try:
- User(id=1001, create_time=datetime.today(), friends=[1, 2, "not number"])
- except ValidationError as e:
- print(e.json())
- class CompanyOrm(Base):
- __tablename__ = "companies"
- id = Column(Integer, primary_key=True, nullable=False)
- public_key = Column(String(20), index=True, nullable=False, unique=True)
- name = Column(String(63), unique=True)
- domains = Column(ARRAY(String(255)))
- class CityInfo(BaseModel):
- province: str
- country: str
- is_affected: Optional[bool] = None # 与bool的区别是可以不传,默认是null
|