Python 如何连接到sqlite3 db文件并在fastapi中获取内容?
我有一个sqlite.db文件,它有5列和1000万行。我已经使用fastapi创建了一个api,现在是我想要连接到sqlite.db文件并根据特定条件(基于当前列)获取内容的api方法之一。我将主要使用SELECT和WHERE 如何利用异步请求来实现这一点。我曾遇到过龟甲虫,但我不知道如何正确地使用它来获取结果Python 如何连接到sqlite3 db文件并在fastapi中获取内容?,python,python-3.x,fastapi,Python,Python 3.x,Fastapi,我有一个sqlite.db文件,它有5列和1000万行。我已经使用fastapi创建了一个api,现在是我想要连接到sqlite.db文件并根据特定条件(基于当前列)获取内容的api方法之一。我将主要使用SELECT和WHERE 如何利用异步请求来实现这一点。我曾遇到过龟甲虫,但我不知道如何正确地使用它来获取结果 from fastapi import FastAPI, UploadFile, File, Form from fastapi.middleware.cors import CORS
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
定义函数是不够的。您需要使用异步数据库驱动程序来利用使用协同路由的优势
的图书馆在这方面很好
pip安装数据库
您还可以通过以下方式安装所需的数据库驱动程序:
pip安装数据库[sqlite]
对你来说,这应该是好事
从fastapi导入fastapi、上载文件、文件、表单
从fastapi.middleware.cors导入CORSMiddleware
从数据库导入数据库
数据库=数据库(“sqlite:///test.db")
@应用程序启动事件(“启动”)
异步def数据库_connect():
等待数据库连接()
@应用程序开启事件(“关闭”)
异步def数据库_disconnect():
等待数据库断开连接()
@app.post(“/测试”)
异步def fetch_数据(id:int):
query=“SELECT*fromtablename,其中ID={}”。格式(str(ID))
结果=等待数据库。全部获取(查询=查询)
返回结果
非常感谢您对我的帮助。在查询1000万数据时,这是否足够快?(或)我必须做其他事情吗?不,你不必做其他事情。只要它作为一个协同程序运行,它将返回数据而不等待另一个返回。但是,拥有一个协同程序不会使查询执行更快,而是更具可伸缩性。假设您同时发送3个请求,每个请求返回1000万个项目。他们将不必等待对方就可以归还。因此,如果一个请求在1秒内返回。3个请求也将在1秒内返回。但这不会使1秒的查询速度加快。是否有一种方法可以将结果作为字典访问,因为我希望以results.column1
或results.column2
的形式访问相应的列。这会容易得多,但现在我必须计算列数并使用结果[0](对于列0)
等等,不,恐怕连ORM都做不到