簡單的使用fastapi從數據庫取數據

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裏進行操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章