model里使用pandas查库,因为fastapi接受列表和字典类型,使用pandas的dataframe数据类型可直接转为字典进行返回。
import pymysql import pandas as pd class getdata(): def __init__(self): # 连接数据库 self.db = pymysql.connect("localhost","root","dbpwd","aa") # 创建游标 # self.cursor = self.db.cursor() def post(self,limit): # 执行sql语句 sql = f"select * from zz_info limit {limit}" # cursor.execute(' ') # 使用pandas操作数据库 res = pd.read_sql(sql,self.db) # records是关键字,可以点进函数里查看注释 res = res.to_dict('records') return res def get(self,网站首页地址): sql = f"select * from zz_info where 网站首页地址='{网站首页地址}' " res = pd.read_sql(sql, self.db) print('执行sql语句完成') res = res.to_dict('records') print('转字典完成') return resapi
from fastapi import FastAPI,Query import uvicorn from pydantic import BaseModel from model import getdata app = FastAPI(title='测试') class BaseItem(BaseModel): 网站首页地址 : str = None 网站名称:str = None @app.post('/postdata') def get_data(item:BaseItem): return getdata().post(item.limit) @app.get('/getdata/') def get_data(limit:int = Query(400, description='数据量'), 网站首页地址:str = Query(None,description='网站首页地址')): # Query传默认参数,还可以设置一些别的内容 return getdata().get(limit,网站首页地址) if __name__ == '__main__': # reload 热加载,修改了自动重启 uvicorn.run(app='fastapi_test:app', reload=True)可以在127.0.0.1:8000/docs里进行操作。