mysql 异步api_FastApi教程|异步SQL(关系)数据库

您也可以将

FastAPI

encode/databases

FastAPI

一起

使用

以使用

async

连接到数据库

await

它兼容:

PostgreSQL的

的MySQL

SQLite的

在此示例中,我们将使用

SQLite

,因为它使用单个文件并且Python具有集成的支持。

因此,您可以复制此示例并按原样运行它。

稍后,对于您的生产应用程序,您可能想要使用

PostgreSQL之

类的数据库服务器

小费

您可以采用有关SQLAlchemy ORM(

SQL(关系)数据库

)

部分的想法

,例如使用实用程序函数独立于

FastAPI

代码

在数据库中执行操作

本部分不应用这些想法,等同于

Starlette中

的对应

思想

导入和设置

SQLAlchemy

导入

SQLAlchemy

创建一个

metadata

对象。

notes

使用

metadata

对象

创建表

from typing import List

import databases

import sqlalchemy

from fastapi import FastAPI

from pydantic import BaseModel

# SQLAlchemy specific code, as with any other app

DATABASE_URL = "sqlite:///./test.db"

# DATABASE_URL = "postgresql://user:password@postgresserver/db"

database = databases.Database(DATABASE_URL)

metadata = sqlalchemy.MetaData()

notes = sqlalchemy.Table(

"notes",

metadata,

sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True),

sqlalchemy.Column("text", sqlalchemy.String),

sqlalchemy.Column("completed", sqlalchemy.Boolean),

)

engine = sqlalchemy.create_engine(

DATABASE_URL, connect_args={"check_same_thread": False}

)

metadata.create_all(engine)

class NoteIn(BaseModel):

text: str

completed: bool

class Note(BaseModel):

id: int

text: str

completed: bool

app = FastAPI()

@app.on_event("startup")

async def startup():

await database.connect()

@app.on_event("shutdown")

async def shutdown():

await database.disconnect()

@app.get("/notes/", response_model=List[Note])

async def read_notes():

query = notes.select()

return await database.fetch_all(query)

@app.post("/notes/", response_model=Note)

async def create_note(note: NoteIn):

query = notes.insert().values(text=note.text, completed=note.completed)

last_record_id = await database.execute(query)

return {**note.dict(), "id": last_record_id}

小费

请注意,所有这些代码都是纯SQLAlchemy Core。

databases

在这里还没有做任何事情。

导入和设置

databases

导入

databases

创建一个

DATABASE_URL

创建一个

database

对象。

from typing import List

import databases

import sqlalchemy

from fastapi import FastAPI

from pydantic import BaseModel

# SQLAlchemy specific code, as with any other app

DATABASE_URL = "sqlite:///./test.db"

# DATAB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值