当前位置: 首页 > wzjs >正文

好看的食品网站免费线上培训平台

好看的食品网站,免费线上培训平台,没有网站可以做cpa,第一家做诱惑的网站[TOC]使用Pydantic开发时,如何将返回数据由snake_case自动转为camel case) 在 FastAPI 中,如果你希望自动将请求和响应中的字段名从 Python 的下划线命名(如 user_name)转换为 Java 的驼峰命名(如 userName&#xff09…

@[TOC]使用Pydantic开发时,如何将返回数据由snake_case自动转为camel case)

在 FastAPI 中,如果你希望自动将请求和响应中的字段名从 Python 的下划线命名(如 user_name)转换为 Java 的驼峰命名(如 userName),可以通过 Pydantic 的配置来实现。

下面的测试代码,使用的是pydantic 2.11.7

(topic_backend) c:\Code\topic-backend>pip show pydantic
Name: pydantic
Version: 2.11.7
Summary: Data validation using Python type hints
Home-page: https://github.com/pydantic/pydantic
Author:
Author-email: Samuel Colvin <s@muelcolvin.com>, Eric Jolibois <em.jolibois@gmail.com>, Hasan Ramezani <hasan.r67@gmail.com>, Adrian Garcia Badaracco <1755071+adriangb@users.noreply.github.com>, Terrence Dorsey <terry@pydantic.dev>, David Montague <david@pydantic.dev>, Serge Matveenko <lig@countzero.co>, Marcelo Trylesinski <marcelotryle@gmail.com>, Sydney Runkle <sydneymarierunkle@gmail.com>, David Hewitt <mail@davidhewitt.io>, Alex Hall <alex.mojaki@gmail.com>, Victorien Plot <contact@vctrn.dev>
License-Expression: MIT
Location: c:\anaconda3\envs\topic_backend\lib\site-packages
Requires: annotated-types, pydantic-core, typing-extensions, typing-inspection
Required-by: fastapi(topic_backend) c:\Code\topic-backend>

FastAPI 使用 Pydantic 模型处理数据序列化和反序列化。你可以通过定义一个 alias_generator 函数将下划线命名转换为驼峰命名,并配置模型使用它。

定义类custom_style_model.py

from pydantic import BaseModel
import redef to_camel(string: str) -> str:return re.sub(r'_([a-zA-Z])', lambda m: m.group(1).upper(), string)class CamelModel(BaseModel):model_config = {"alias_generator": to_camel,"populate_by_name": True, }

Schema定义示例

将原来Schemal定义中的BaseModel,改为新的CamelModel

from pydantic import BaseModel
from typing import Optional
from app.schemas.custom_style_model import CamelModel, to_camel
import app.schemas.custom_style_model as custom_style_modelclass node_relationship_info(CamelModel):node_id_1: intnode_name_1: strnode_label_1: strnode_property_1: Optional[dict] = Nonenode_id_2: intnode_name_2: strnode_label_2: strnode_property_2: Optional[dict] = Nonerelationship_name: strrelationship_property: Optional[dict] = None

应用中的数据校验方式如下:

def list_node_relationship_info_by_page(skip: int = 0, limit: int = 10) -> List[node_relationship_info]:"""获取知识图谱节点关系信息(分页):param skip: 跳过数量:param limit: 限制数量:return: 知识图谱节点关系信息列表"""try:neo4j_handler = Neo4jHandler()# 查询所有节点和关系,包含分页query = """MATCH (n1)-[r]->(n2)RETURN id(n1) as node_id_1,n1.name as node_name_1, labels(n1)[0] as node_label_1, id(n2) as node_id_2,n2.name as node_name_2, labels(n2)[0] as node_label_2, properties(n1) as node_property_1, properties(n2) as node_property_2, type(r) as relationship_name,properties(r) as relationship_propertySKIP $skip LIMIT $limit"""result = neo4j_handler.execute_query(query, {"skip": skip, "limit": limit})# 转换结果为node_relationship_info对象列表node_relationship_list = []for record in result:print(type(record))print(record)try:node_id_1=record.get("node_id_1", ""),node_id_2=record.get("node_id_2", ""),node_name_1=record.get("node_name_1", ""),# print(type(node_name_1))node_name_2=record.get("node_name_2", ""),node_label_1=record.get("node_label_1", ""),node_label_2=record.get("node_label_2", ""),# node_property_1=record.get("node_property_1"),# node_property_2=record.get("node_property_2"),relationship_name=record.get("relationship_name", ""),node_id_1 = extract_data_value(node_id_1) node_id_2 = extract_data_value(node_id_2) node_name_1 = extract_data_value(node_name_1) node_name_2 = extract_data_value(node_name_2)node_label_1 = extract_data_value(node_label_1)node_label_2 = extract_data_value(node_label_2)relationship_name = extract_data_value(relationship_name)# relationship_property=record.get("relationship_property")record = {"node_id_1": node_id_1,"node_name_1": node_name_1,"node_label_1": node_label_1,"node_id_2": node_id_2,"node_name_2": node_name_2,"node_label_2": node_label_2,"relationship_name": relationship_name}node_info = node_relationship_info.model_validate(record)node_relationship_list.append(node_info)except Exception as e:logger.warning(f"转换记录失败: {e}, 记录: {record}")print(e)continueneo4j_handler.close()return node_relationship_listexcept Exception as e:logger.error(f"获取知识图谱节点关系信息失败: {e}")neo4j_handler.close()return []

测试结果

原返回结果

在这里插入图片描述

处理后的返回结果

在这里插入图片描述

http://www.dtcms.com/wzjs/224358.html

相关文章:

  • 网站制作成品站长seo软件
  • 我国数字经济报告免费的seo教程
  • 做彩票网站用什么服务器链接提交工具
  • 武汉公司网页设计佛山网站建设十年乐云seo
  • 网站后缀net网站网址查询工具
  • 文章网站模板哪个好个人主页网页设计模板
  • 确定网站建设的目的google下载手机版
  • 做网站搜爬闪优化落实疫情防控新十条
  • 做网站公什么是淘宝seo
  • 南宁两学一做党课网站海外营销
  • 家政服务技术支持东莞网站建设单页网站制作
  • 做网站便宜百度云登陆首页
  • 建设银行网站支付流程苏州百度推广排名优化
  • 网站导航栏字体网络推广方式方法
  • 新网站怎么做才能让搜狗收录东莞头条最新新闻
  • 生态建设研究所网站正规拉新推广平台有哪些
  • 邢台专业做网站价格软文推广营销
  • 政府网站建设运营合同百度号码
  • 国内工程机械行业网站建设现状南京seo推广
  • 上海广告公司招聘信息沈阳seo优化排名公司
  • 会外语和做网站广东seo推广哪里好
  • mac做网站改html文件seo关键字优化教程
  • 微信公众号链接的网站怎么做的短信广告投放软件
  • WordPress 微信采集助手科学新概念seo外链
  • 温州做外贸网站关键词seo公司真实推荐
  • 做美甲的网站网络推广渠道和方式
  • 重庆网站推广外包企业洛阳seo网络推广
  • 酷炫网站设计风格微信小程序官网
  • 深圳网站建设i9988深圳网络推广公司有哪些
  • 自助建站软件杭州seo代理公司