Python Web框架之FastAPI简单实例

您所在的位置:网站首页 ajax实例化 Python Web框架之FastAPI简单实例

Python Web框架之FastAPI简单实例

2023-08-22 15:41| 来源: 网络整理| 查看: 265

简介

引用FastAPI官网:“FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。”

官网地址:https://fastapi.tiangolo.com/zh/

依赖

Python 3.6 及更高版本

安装 pip install fastapi pip install uvicorn 示例

示例可查看官网示例,这里不多赘述。以下示例主要展示FastAPI结合sqlite完成增删改查。废话不多说,直接上代码:

数据库表结构:

首先创建models.py

from sqlalchemy import Boolean, Column, ForeignKey, Integer, String from database import Base class Student(Base): __tablename__ = "student" id = Column(Integer, primary_key=True, index=True) name = Column(String) sex = Column(String) def to_dict(self): return {c.name: getattr(self, c.name) for c in self.__table__.columns}

然后创建database.py

from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker SQLALCHEMY_DATABASE_URL = "sqlite:///test.db" engine = create_engine( SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False} ) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() def get_session(): db = SessionLocal() db.execute('pragma foreign_keys=on') try: yield db finally: db.close()

(注意,这里数据库文件和python代码放在了同一目录!)

最后创建main.py

from fastapi import FastAPI, Depends, Request, Response, status, HTTPException from database import get_session from sqlalchemy.orm import Session from sqlalchemy.orm.exc import NoResultFound from models import Student app = FastAPI() @app.get('/student') async def get_student(id: int, response: Response, db: Session = Depends(get_session)): try: r = db.query(Student).filter(Student.id == id).one() except NoResultFound: response.status_code = status.HTTP_404_NOT_FOUND return 'student not found' return { 'id': r.id, 'name': r.name, 'sex': r.sex, } @app.post('/student') async def create_student(id: int, name: str, sex: str, db: Session = Depends(get_session)): student = Student(id=id, name=name, sex=sex) try: db.add(student) db.commit() except: return 'add student failed' db.refresh(student) return 'ok' @app.put('/student/{id}') async def update_student(id: int, name: str, sex: str, response: Response, db: Session = Depends(get_session)): try: student = db.query(Student).filter(Student.id == id).one() except NoResultFound: response.status_code = status.HTTP_404_NOT_FOUND return 'student not found' student.id = id student.name = name student.sex = sex try: db.merge(student) db.commit() except: response.status_code = status.HTTP_409_CONFLICT return 'student name already exists or invalid type' return 'ok' @app.delete('/sudent/{id}') async def delete_student(id: int, response: Response, db: Session = Depends(get_session)): ret = db.query(Student).filter(Student.id == id).delete() if ret == 0: response.status_code = status.HTTP_404_NOT_FOUND return 'student not found' db.commit() return 'ok' if __name__ == '__main__': import uvicorn uvicorn.run('main:app', reload=True)

启动程序,打开浏览器,输入http://127.0.0.1:8000/docs,就会进到这个界面:

这是FastAPI自带供开发者自己调试的,点击GET:

然后点击Try it out,在id栏位输入数字,点击Execute,就会得到响应了。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3