I have recently come to know about fastAPI and worked my way through the tutorial and other docs. Although fastAPI is pretty well documented, I couldn't find information about how to process a nested input when working with a database.
For testing, I wrote a very small family API with two models:
class Member(Base):
__tablename__ = 'members'
id = Column(Integer, primary_key=True, server_default=text("nextval('members_id_seq'::regclass)"))
name = Column(String(128), nullable=False)
age = Column(Integer, nullable=True)
family_id = Column(Integer, ForeignKey('families.id', deferrable=True, initially='DEFERRED'), nullable=False, index=True)
family = …Run Code Online (Sandbox Code Playgroud) 我在 Kubuntu 18.04 上安装了python3 3.6.9。我已经安装了fastapi使用pip3 install fastapi。我正在尝试通过其官方文档测试驱动该框架,并且我在其指南的关系数据库部分。
在schemas.py:
from typing import List
from pydantic import BaseModel
class VerseBase(BaseModel):
AyahText: str
NormalText: str
class Verse(VerseBase):
id: int
class Config:
orm_mode = True
Run Code Online (Sandbox Code Playgroud)
VS代码突出一个错误from pydantic import BaseModel,它会告诉:No name 'BaseModel' in module 'pydantic'。此外,当我尝试运行时,出现uvicorn main:app reload 以下错误:
Run Code Online (Sandbox Code Playgroud)File "./main.py", line 6, in <module> from . import crud, models, schemas ImportError: attempted relative import with no known parent package
我试图renstallpydantic …
在使用 Opencv 比较两个图像后,我试图在 fastAPI 中返回一个图像。
这是我到目前为止所做的:
from fastapi import FastAPI , File, UploadFile
import numpy as np
from cv2 import *
import os
import base64
app = FastAPI(debug = True)
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...),file1: UploadFile = File(...)):
content = await file.read()
nparr = np.fromstring(content, np.uint8)
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
content1 = await file1.read()
nparr1 = np.fromstring(content1, np.uint8)
img1 = cv2.imdecode(nparr1, cv2.IMREAD_COLOR)
akaze = cv2.AKAZE_create()
kpts1, desc1 = akaze.detectAndCompute(img, None)
kpts2, desc2 = akaze.detectAndCompute(img1, None)
matcher = cv2.DescriptorMatcher_create(cv2.DescriptorMatcher_BRUTEFORCE_HAMMING) …Run Code Online (Sandbox Code Playgroud) 我正在学习在 postgresql 中使用 fastapi。我有一个来自其他项目的巨大数据库,它已经作为 postgre 数据库完成了……所以我尝试添加 fastapi 但不知道我该怎么做……看来您必须使用 fastapi 正确创建所有数据库模式从一开始......我找不到任何有用的例子,所以我希望你能指导我。谢谢你的时间,请原谅我的英语
我正在处理在 FastAPI 上对远程 ubuntu 服务器进行的项目沉积。我将尝试通过命令从终端(使用 SSH 连接)运行项目
gunicorn -k uvicorn.workers.UvicornWorker main:app
Run Code Online (Sandbox Code Playgroud)
输出是
gunicorn -k uvicorn.workers.UvicornWorker main:app
[2020-07-14 15:24:28 +0000] [23102] [INFO] Starting gunicorn 20.0.4
[2020-07-14 15:24:28 +0000] [23102] [INFO] Listening at: http://127.0.0.1:8000 (23102)
[2020-07-14 15:24:28 +0000] [23102] [INFO] Using worker: uvicorn.workers.UvicornWorker
[2020-07-14 15:24:28 +0000] [23104] [INFO] Booting worker with pid: 23104
[2020-07-14 15:24:28 +0000] [23104] [INFO] Started server process [23104]
[2020-07-14 15:24:28 +0000] [23104] [INFO] Waiting for application startup.
[2020-07-14 15:24:28 +0000] [23104] [INFO] Application startup complete.
Run Code Online (Sandbox Code Playgroud)
但我需要该项目在服务器的 IP 地址上可用。如果我尝试像 …
我正在尝试将alembic库连接到数据库和sqlalchemy库。作为指南,我使用此示例 链接
我的项目文件:
数据库文件
from databases import Database
from sqlalchemy import MetaData, create_engine
DATABASE_URL = "postgresql://....@localhost:5432/db"
engine = create_engine(DATABASE_URL)
metadata = MetaData()
database = Database(DATABASE_URL)
Run Code Online (Sandbox Code Playgroud)
模型.py
from sqlalchemy import Table, Column, Integer, String, DateTime
from sqlalchemy.sql import func
from db import metadata
notes = Table(
"notes",
metadata,
Column("id", Integer, primary_key=True),
Column("title", String(50)),
Column("description", String(50)),
Column("created_date", DateTime, default=func.now(), nullable=False),
)
Run Code Online (Sandbox Code Playgroud)
env.py(alembic设置)
from db import DATABASE_URL, metadata
....
#add new
target_metadata = metadata …Run Code Online (Sandbox Code Playgroud) 我有一个 fastapi 应用程序,我想记录在它上面发出的每个请求。我正在尝试为此使用 loguru 和 uvicorn,但我不知道如何打印与每个请求关联的标头和请求参数(如果有)。
我想要这样的东西:
INFO 2020-08-13 13:36:33.494 uvicorn.protocols.http.h11_impl:send - 127.0.0.1:52660 - "GET
/url1/url2/ HTTP/1.1" 400 params={"some": value, "some1":value}
Run Code Online (Sandbox Code Playgroud)
有办法吗?谢谢你的帮助。
这里有一些链接:
我正在尝试呈现显示来自网络摄像头的视频捕获的 html 页面。但面临错误:- 500 Server Error TypeError: TemplateResponse() missing 1 required positional argument: 'context'。我在 Flask 中尝试过的相同代码,在那里工作正常。
from fastapi import FastAPI
import uvicorn
from fastapi import Depends, FastAPI
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
import cv2
app = FastAPI(debug=True)
templates = Jinja2Templates(directory="templates")
@app.get("/")
async def index():
return templates.TemplateResponse("index.html")
async def gen_frames(camera_id):
cap= cv2.VideoCapture(0)
while True:
# for cap in caps:
# # Capture frame-by-frame
success, frame = cap.read() # read the camera frame …Run Code Online (Sandbox Code Playgroud) 我开始使用 fastApi 框架进行编程,它带有一个内置的 swagger 接口来处理请求和响应。我已经完成了近20个api,在swagger界面上很难管理和识别api。有人告诉我在swagger界面中添加部分以区分api,但我在google上找不到任何示例,我需要你们的帮助。
提前致谢...
如何为 fastapi 创建自定义身份验证?
示例:我想使用标头 {'password': 'best password'} 发出请求,并且如果标头中的密码密钥是“最佳密码”,则允许在所有视图中不更改内容的情况下查看“仅认证”内容(并与通用文档)。
fastapi ×10
python ×7
pydantic ×2
python-3.x ×2
uvicorn ×2
alembic ×1
api ×1
gunicorn ×1
logging ×1
opencv ×1
opencv3.1 ×1
postgresql ×1
restapi ×1
sqlalchemy ×1
starlette ×1
swagger-2.0 ×1
swagger-ui ×1