FastAPI + sqlite向数据库插入数据



我是FastAPI的新手,我正在玩,以了解框架。我试图插入数据到我的数据库,但我错过了一些东西。

这是我的模型:

from datetime import datetime
from pydantic import BaseModel
class Article(BaseModel):
id: int
title: str
slug: str
content: str
author: str
date: datetime
class InArticle(BaseModel):
title: str
slug: str
content: str
author: str

这里是逻辑

@app.post("/articles", response_model=InArticle)
async def create_article(article: InArticle):
cursor = connexion.cursor()
article_obj = (InArticle(
title=article.title,
slug=article.slug,
content=article.content,
author=article.author
))
db_query = """INSERT INTO Article (title, slug, content, author) 
VALUES (?, ?, ?, ?)"""
cursor.execute(db_query, article_obj)
connexion.close()
return article

我得到这个错误:

cursor.execute(db_query, article_obj)
ValueError: parameters are of unsupported type

我错过了什么?

SQLAlchemy正在抱怨您给它一个单一的article_obj-它不知道该怎么做。如果您计划手动发出查询(您可能希望查看SQLModel或使用SQLAlchemy的ORM),则必须单独给出参数。

要使用你给出的语法,你应该手动给出值:

cursor.execute(db_query, (article.title, article.slug, article.content, article.author))

. .或者用命名参数代替:

db_query = """INSERT INTO Article (title, slug, content, author) 
VALUES (:title, :slug, :content, :author)"""
# .. which you can then expand automagically
cursor.execute(db_query, **article_obj.dict())
# **article_obj.dict() expands it to title=article_obj.title, ..etc

最新更新