fastapi使用教程2--pydantic和SQLAlchemy使用

首先说下SQLAlchemy,这个orm库,如何使用呢?

创建实例,建立映射类,常见model模型,再create_all创建一下

from sqlalchemy import Column, Integer, String, DateTime from database import Base, engine from datetime import datetime from sqlalchemy.ext.declarative import declarative_base class BaseModel(Base): create_time = Column(DateTime, default=datetime.now(), unique=True) update_time = Column(DateTime, default=datetime.now(), onupdate=datetime.now(), unique=True) DeclarativeBase = declarative_base(cls=BaseModel) class Project(DeclarativeBase): __tablename__ = "project" id = Column(Integer, primary_key=True, index=True) name = Column(String(255), unique=True, index=True) owner = Column(String(255), unique=True) Operator = Column(String(255), unique=True) def __repr__(self): return "{}".format(self.__tablename__) if __name__ == '__main__': # 在数据库中创建模型对象的表 # Base.metadata.clear() Base.metadata.create_all(engine)

 

pydantic的使用,导入basemode,然后继承该model,设置对应字段要效验的格式,

from pydantic import BaseModel from datetime import datetime class ProjectBase(BaseModel): """ 基础模型 """ id: str class ProjectCreate(BaseModel): """ 请求模型验证: name: owner: Operator: """ name: str owner: str Operator: str class Project(BaseModel): """ 响应模型: id: name: owner, Operator, create_time, update_time 并且设置orm_mode与之兼容 """ id: int name: str owner: str Operator: str create_time: datetime = None update_time: datetime = None class Config: orm_mode = True

 

BaseModel 模型属性

上面的例子只是展示了模型可以做什么的冰山一角。模型具有以下方法和属性:
dict() 返回模型字段和值的字典;参看。导出模型
json() 返回一个 JSON 字符串表示dict();参看。导出模型
copy() 返回模型的副本(默认为浅拷贝);参看。导出模型
parse_obj() 如果对象不是字典,则用于将任何对象加载到具有错误处理的模型中的实用程序;参看。辅助函数
parse_raw() 用于加载多种格式字符串的实用程序;参看。辅助函数
parse_file() 喜欢parse_raw()但是对于文件路径;参看。辅助函数
from_orm() 将数据从任意类加载到模型中;参看。ORM模式
schema() 返回将模型表示为 JSON Schema 的字典;参看。图式
schema_json() schema()返回;的 JSON 字符串表示形式 参看。图式
construct() 无需运行验证即可创建模型的类方法;参看。创建没有验证的模型


fields_set 初始化模型实例时设置的字段名称集
fields 模型字段的字典
config 模型的配置类,cf。模型配置

具体如何使用呢?

user = Project(id=2, name='name', owner='owner', Operator='Operator') print(user.id) #结果就是2

pydantic.error_wrappers.ValidationError: 1 validation error for Project
id
value is not a valid integer (type=type_error.integer)

结合使用

from sqlalchemy.orm import Session import models, schemas # 通过id查询用户 def get_user(db: Session, user_id: int): return db.query(models.Project).filter(models.Project.id == user_id).first() # 新建用户 def db_create_user(db: Session, project: schemas.ProjectCreate): db_projcet = models.Project(name=project.name, owner=project.owner, Operator=project.Operator) db.add(db_projcet) db.commit() # 提交保存到数据库中 db.refresh(db_projcet) # 刷新 return db_projcet

 

参考 https://www.cnblogs.com/blueberry-mint/p/14277882.html

 


__EOF__

本文作者hf
本文链接https://www.cnblogs.com/hufengTE/p/16371279.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   南风。  阅读(3779)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示