我有一个sqlite.db文件,它有5列和1千万行。我已经使用sqlite.db创建了一个api,现在在我希望连接到那个sqlite.db文件的api方法中,并根据特定的条件(基于当前的列)获取内容。我主要是使用SELECT和地点。
我如何通过利用异步请求来做到这一点。我遇到了乌龟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发布于 2020-12-12 23:20:02
这里遗漏了一点,仅用async定义函数是不够的。您需要使用异步数据库驱动程序来利用协同机制的优势。
的库非常适合这一目的。
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发布于 2022-08-04 03:54:06
从查询结果集中的列访问数据的一种方法:
您可以将db结果集读入Pandas数据格式。在那里,您可以使用dataframe“列名”访问列数据,该列数据返回该列数据的类似列表的可迭代性。您可以对字典数据使用dataframe的内置to_dict()方法。
https://stackoverflow.com/questions/65270624
复制相似问题