欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

简单的使用fastapi从数据库取数据

程序员文章站 2022-10-19 12:54:39
model里使用pandas查库,因为fastapi接受列表和字典类型,使用pandas的dataframe数据类型可直接转为字典进行返回。import pymysqlimport pandas as pdclass getdata(): def __init__(self): # 连接数据库 self.db = pymysql.connect("localhost","root","dbpwd","aa") # 创建游标 # s...

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 res

api

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里进行操作。

本文地址:https://blog.csdn.net/qq_41387609/article/details/107107648