Python Web框架之FastAPI简单实例 |
您所在的位置:网站首页 › ajax实例化 › Python Web框架之FastAPI简单实例 |
简介
引用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 |