Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何连接到sqlite3 db文件并在fastapi中获取内容?_Python_Python 3.x_Fastapi - Fatal编程技术网

Python 如何连接到sqlite3 db文件并在fastapi中获取内容?

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

我有一个sqlite.db文件,它有5列和1000万行。我已经使用fastapi创建了一个api,现在是我想要连接到sqlite.db文件并根据特定条件(基于当前列)获取内容的api方法之一。我将主要使用SELECT和WHERE

如何利用异步请求来实现这一点。我曾遇到过龟甲虫,但我不知道如何正确地使用它来获取结果

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都做不到