[英]How to connect to a sqlite3 db file and fetch contents in fastapi?
我有一個 sqlite.db 文件,它有 5 列和 1000 萬行。 我已經使用 fastapi 創建了一個 api,現在在 api 方法之一中,我想連接到該 sqlite.db 文件並根據某些條件獲取內容(基於)。 我主要會使用 SELECT 和 WHERE。
我怎樣才能通過利用異步請求來做到這一點。 我遇到過 Tortoise ORM 但我不確定如何正確使用它來獲取結果。
from fastapi import FastAPI, UploadFile, File, Form
from fastapi.middleware.cors import CORSMiddleware
DATABASE_URL = "sqlite:///test.db"
@app.post("/test")
async def fetch_data(id: int):
query = "SELECT * FROM tablename WHERE ID={}".format(str(id))
# how can I fetch such query faster from 10 million records while taking advantage of async func
return results
您在這里遺漏了一點,使用async
定義 function 是不夠的。 您需要使用異步數據庫驅動程序來利用協程。
pip install databases
您還可以使用以下命令安裝所需的數據庫驅動程序:
pip install databases[sqlite]
在你的情況下,這應該很好。
from fastapi import FastAPI, UploadFile, File, Form
from fastapi.middleware.cors import CORSMiddleware
from databases import Database
database = Database("sqlite:///test.db")
@app.on_event("startup")
async def database_connect():
await database.connect()
@app.on_event("shutdown")
async def database_disconnect():
await database.disconnect()
@app.post("/test")
async def fetch_data(id: int):
query = "SELECT * FROM tablename WHERE ID={}".format(str(id))
results = await database.fetch_all(query=query)
return results
從查詢結果集中的列訪問數據的一種方法:
您可以將 db 結果集讀入 Pandas dataframe。 從那里,您可以使用 dataframe[“column name”] 訪問列數據,該數據返回該列數據的類似列表的可迭代對象。 您可以將數據框的內置 to_dict() 方法用於字典數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.