首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FastAPI Python数据库连接

FastAPI Python数据库连接
EN

Stack Overflow用户
提问于 2022-01-08 10:55:23
回答 2查看 2.4K关注 0票数 0

我是FastAPI世界的新手,我正在创建一个API来获取数据并将数据发布到MySQL数据库。我在互联网上跟踪了几个链接,并开发了下面的代码

DatabaseConnection.py

代码语言:javascript
复制
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

sql_database_url="mysql://root:root@localhost:3306/first_db"

engine=create_engine(sql_database_url)

sessionLocal=sessionmaker(autocommit=False,bind=engine)

base=declarative_base()

MainClass.py

代码语言:javascript
复制
from fastapi import FastAPI,Query,Depends
from sqlalchemy import Column,String,Integer
from typing import Optional,List
from pydantic import BaseModel
from sqlalchemy.orm import Session

from DatabaseConnection import engine,sessionLocal,base

app=FastAPI()

class User(base):
    __tablename__="users"
    id=Column(Integer,primary_key=True,index=True)
    name=Column(String(255),unique=True,index=True)

class UserSchema(BaseModel):
    id:int
    name:str

    class Config:
        orm_model=True


base.metadata.create_all(bind=engine)

@app.post("/create-user")
def createUser(userSchema:UserSchema):
    user=User(id=userSchema.id,name=userSchema.name)
    sessionLocal().add(user)
    sessionLocal().commit()
    return user

当我尝试使用UVICorn运行这个API时,我成功地运行了,而且表也成功创建了,但是我要通过正文发送的数据没有添加到表中。

该表显示添加了值\

我已经提到了链接

任何帮助都将不胜感激。提前感谢

EN

回答 2

Stack Overflow用户

发布于 2022-01-10 05:53:22

感谢@anjaneyulubatta505 505寻求帮助

但是,我们需要对数据库中的数据进行以下更改

代码语言:javascript
复制
@app.post("/create-user")
def createUser(userSchema:UserSchema):
    user = User(id=userSchema.id, name=userSchema.name)
    with Session(bind=engine) as session:
        session.add(user)
        session.commit()
    return user

参考链接

  1. Link1
  2. Link2来自sqlAlChemy
票数 1
EN

Stack Overflow用户

发布于 2022-01-09 07:17:31

您没有将更改提交到数据库。只需像下面这样修改您的代码就可以了。

代码语言:javascript
复制
# ... imports and other stuff
from DatabaseConnection import sessionLocal

@app.post("/create-user")
def createUser(userSchema:UserSchema):
    user = User(id=userSchema.id, name=userSchema.name)
    with sessionLocal() as session:
        session.add(user)
        session.commit()

    return user
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70631647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档