我在snake_case 中有一个数据对象,并且有一个使用snake_case 的数据库模式。我只想在数据库中创建一个新行。为了做到这一点,我必须首先序列化数据对象。不幸的是,当我使用默认的 fastAPI 序列化程序时,我总是返回一个驼峰命名法对象。当然,我可以使用另一个库将序列化的camelCase数据再次转换为snake_case,但必须有更简单的方法。
class CRUDPost(CRUDBase[Post, PostCreate, PostUpdate]):
def create(self, db: Session, obj_in: PostCreate, created_by: UUID4) -> Post:
logger.info(obj_in) // => obj in snake_case
obj_in_data = jsonable_encoder(obj_in, by_alias=True)
logger.info(obj_in_data) => obj in camelCase
db_obj = self.model(**obj_in_data, created_by=created_by)
db.add(db_obj)
db.commit()
db.refresh(db_obj)
return db_obj
Run Code Online (Sandbox Code Playgroud)
编辑:
Camelcase 中的对象:{'leetcodeSubmissions': 0, 'interviewTimeline': 0}
Snake_case 中的对象:{'leetcode_submissions': 0, 'interview_timeline': 0}
我有变量保存sql的时间格式,并且需要返回它,但是当我将其打印回来时它被反斜杠转义了
参见示例:
@app.get("/")
def test_string():
sql_date ='YYYY-MM-DD"HH24:MI:SS"Z"'
print(sql_date)
#get YYYY-MM-DD"HH24:MI:SS"Z"
return sql_date
#return "YYYY-MM-DD\"HH24:MI:SS\"Z\""
Run Code Online (Sandbox Code Playgroud)
如何在没有转义反斜杠的情况下从 fastapi 获取返回值?
下面的函数正在调用 create_presigned_url 但我在等待中收到错误。
def getPreSignedURL(request: Request, file: UploadFile = File(...) ):
resp = await create_presigned_url(request,file)
return resp
Run Code Online (Sandbox Code Playgroud)
这是我想调用的异步函数
async def create_presigned_url(bucket_name, object_name, expiration=3600):
---
return response
Run Code Online (Sandbox Code Playgroud) 我有一个 fastapi 应用程序,我想将其部署到 google cloud run。
对于 gRPC python 项目,我们将其部署为
gcloud beta run deploy countries --source .
Run Code Online (Sandbox Code Playgroud)
但这并没有按预期部署。我观看了一个使用Google cloud buildpacks从源代码部署的视频。
有没有人有办法做到这一点?
我的代码就像
from typing import List
import geopandas as gpd
from fastapi import FastAPI
from geojson_pydantic.geometries import Geometry
from geojson_pydantic.features import Feature
from pydantic import BaseModel
from shapely.geometry.geo import shape
import json
import shapely
class Country(BaseModel):
name: str
code: str
type: str
geometry: Feature
app = FastAPI(
title="Natural Earth Countries",
description="This is a list of endpoints which you …Run Code Online (Sandbox Code Playgroud) 我正在编写一个带有字节体的 python post 请求:
with open('srt_file.srt', 'rb') as f:
data = f.read()
res = requests.post(url='http://localhost:8000/api/parse/srt',
data=data,
headers={'Content-Type': 'application/octet-stream'})
Run Code Online (Sandbox Code Playgroud)
在服务器部分,我尝试解析正文:
app = FastAPI()
BaseConfig.arbitrary_types_allowed = True
class Data(BaseModel):
data: bytes
@app.post("/api/parse/{format}", response_model=CaptionJson)
async def parse_input(format: str, data: Data) -> CaptionJson:
...
Run Code Online (Sandbox Code Playgroud)
但是,我收到了 422 错误:
{"detail":[{"loc":["body"],"msg":"value is not a valid dict","type":"type_error.dict"}]}
那么我的代码哪里出了问题,我应该如何修复它?预先感谢大家的帮助!
我尝试创建使用 websockets 并可以向所有连接的客户端广播消息的 fastapi 应用程序。我发现 websockets 不可能做到这一点,但找到了出色的库 - socket.io。但是我不确定如何使用它并将其与我现有的 fastapi 应用程序集成。
我在尝试接受迂腐模型时遇到此错误。经过一段时间的调试后,我相信问题出在接受上CodeCreate
悬垂模型
class BaseCode(BaseModel):
index: Optional[int] = Field(None)
email: EmailStr
gen_time: datetime
expire_time: datetime
class CodeCreate(BaseCode):
code: int
used_time: Optional[datetime] = Field(None)
class Config:
orm_mode = True
class Message(BaseModel):
message: str
Run Code Online (Sandbox Code Playgroud)
代码 ORM
class Code(Base):
__tablename__ = 'code'
index = Column(Integer, primary_key=True, autoincrement=True)
code = Column(Integer)
email = Column(String, ForeignKey('user.email'))
gen_time = Column(DateTime)
expire_time = Column(DateTime)
used_time = Column(DateTime, nullable=True)
Run Code Online (Sandbox Code Playgroud)
处理程序
@app.post('/verify-code', response_model=schemas.Message, responses={404: {"model": schemas.Message}, 406: {"model": schemas.Message}})
async def verify_code(code: schemas.CodeCreate, response: Response, device_name: str = Body(..., …Run Code Online (Sandbox Code Playgroud) 我想使用从 FastAPI 后端返回的 React 来渲染图像StreamingResponse。图像是数组的形式numpy,是cv2对象类型。
@app.post("/predict")
async def root(file: UploadFile = File(...)):
global model
global store_coordinates
global store_faces
global store_mesh
content = await file.read()
nparr = np.fromstring(content, np.uint8)
bg_img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
......................
for i in range(len(store_coordinates)):
x, y, w, h = store_coordinates[i]
bg_img [b:b + d, a:a + c] = store_mesh[i]
res,im_png = cv2.imencode(".png", bg_img)
return StreamingResponse(io.BytesIO(im_png.tobytes()), media_type="image/png")
Run Code Online (Sandbox Code Playgroud)
在这里,我创建了一个 API 端点,其中使用POST请求接收上传的图像,并StreamableResponse(Image)返回 a。如何在 React 前端渲染这个返回的响应?
反应代码:
import React, { Component …Run Code Online (Sandbox Code Playgroud) 我有一个简单的 React Ui,它应该从中获取 json 文件localhost:8000/todo并在localhost:3000. 这是所需的输出:

所以,这两行是“读一本书”。和“骑自行车环城”。没有显示。这两行应该来自localhost:8000/todo类型JSON信息。我觉得我可以从 获取数据localhost:8000/todo,但我不知道如何在 中显示它们localhost:3000,这是我的输出。
这是我为此提供的功能:
export default function Todos() {
const [todos, setTodos] = useState([])
const fetchTodos = async () => {
const response = await fetch("http://localhost:8000/todo")
const todos = await response.json()
setTodos(todos.data)
}
useEffect(() => {
fetchTodos()
}, [])
return (
<TodosContext.Provider value={{todos, fetchTodos}}>
<AddTodo />
<Stack spacing={5}>
{todos.map((todo) => (
<b>{todo.item}</b>
))}
</Stack>
</TodosContext.Provider>
)
}
Run Code Online (Sandbox Code Playgroud)
{todos.item}是应该打印项目的部分,但它没有!
以下是 …
我有一个 FastAPI 应用程序,我需要创建一个 Car 类,其中属性Wheel和speed可以采用 int或str 类型。怎么做?此代码不起作用,因为Wheel和speed将只有整数类型(第二次打印中不是 str ):
from pydantic import BaseModel
class Car(BaseModel):
wheel: int | str
speed: int | str
bmw = Car(wheel=4, speed=250)
mercedes = Car(wheel='4', speed='200')
print(type(bmw.wheel), type(bmw.speed))
print(type(mercedes.wheel), type(mercedes.speed))
Run Code Online (Sandbox Code Playgroud)
结果是:
<class 'int'> <class 'int'>
<class 'int'> <class 'int'>
Run Code Online (Sandbox Code Playgroud) fastapi ×10
python ×10
pydantic ×2
reactjs ×2
async-await ×1
buildpack ×1
cors ×1
gcloud ×1
image ×1
javascript ×1
python-3.x ×1
socket.io ×1
websocket ×1