首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何连接到sqlite3 db文件并在fastapi中获取内容?

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

Stack Overflow用户
提问于 2020-12-12 22:48:21
回答 2查看 7.4K关注 0票数 4

我有一个sqlite.db文件,它有5列和1千万行。我已经使用sqlite.db创建了一个api,现在在我希望连接到那个sqlite.db文件的api方法中,并根据特定的条件(基于当前的列)获取内容。我主要是使用SELECT和地点。

我如何通过利用异步请求来做到这一点。我遇到了乌龟ORM,但我不知道如何正确地使用它来获取结果。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-12 23:20:02

这里遗漏了一点,仅用async定义函数是不够的。您需要使用异步数据库驱动程序来利用协同机制的优势。

的库非常适合这一目的。

代码语言:javascript
复制
pip install databases

您还可以通过以下方式安装所需的数据库驱动程序:

代码语言:javascript
复制
pip install databases[sqlite]

在你的情况下,这应该是好事。

代码语言:javascript
复制
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
票数 13
EN

Stack Overflow用户

发布于 2022-08-04 03:54:06

从查询结果集中的列访问数据的一种方法:

您可以将db结果集读入Pandas数据格式。在那里,您可以使用dataframe“列名”访问列数据,该列数据返回该列数据的类似列表的可迭代性。您可以对字典数据使用dataframe的内置to_dict()方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65270624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档