mirror of
https://github.com/kennethreitz/pydantic.git
synced 2026-06-05 23:00:18 +00:00
33b7d52d31
* moving docs to mkdocs * transfering readme to md and more * fixing build * splitting usage.md * improving schema.md and index.md * fix make_history.rst * models intro * working on data conversation and required fields * more fixes to models.md * list all standard types supported * list of pydantic types * tweaks * update links in code * Apply suggestions from code review incorporate @dmontagu's suggestions. Co-Authored-By: dmontagu <35119617+dmontagu@users.noreply.github.com> * Apply suggestions from code review more missed suggestions. Co-Authored-By: dmontagu <35119617+dmontagu@users.noreply.github.com> * Apply suggestions from code review more corrects. * cleanup * Field order warning * fix and regenerate benchmarks * format examples better, cleanup * improve schema mapping table * correct highlighting file types in schema.md * add redirects in javascript * add logo
39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
from typing import List
|
|
from sqlalchemy import Column, Integer, String
|
|
from sqlalchemy.dialects.postgresql import ARRAY
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
from pydantic import BaseModel, constr
|
|
|
|
Base = declarative_base()
|
|
|
|
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 CompanyModel(BaseModel):
|
|
id: int
|
|
public_key: constr(max_length=20)
|
|
name: constr(max_length=63)
|
|
domains: List[constr(max_length=255)]
|
|
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
co_orm = CompanyOrm(
|
|
id=123,
|
|
public_key='foobar',
|
|
name='Testing',
|
|
domains=['example.com', 'foobar.com']
|
|
)
|
|
print(co_orm)
|
|
#> <__main__.CompanyOrm object at 0x7ff4bf918278>
|
|
co_model = CompanyModel.from_orm(co_orm)
|
|
print(co_model)
|
|
#> CompanyModel id=123
|
|
#> public_key='foobar'
|
|
#> name='Testing'
|
|
#> domains=['example.com', 'foobar.com']
|