专栏首页csicoFastAPI 学习之路(三十二)创建数据库

FastAPI 学习之路(三十二)创建数据库

在大型的web开发中,我们肯定会用到数据库操作,那么FastAPI也支持数据库的开发,你可以用 PostgreSQL MySQL SQLite Oracle 等

本文用SQLite为例。我们看下在fastapi是如何操作设计数据库的

#这个安装依赖也可以
pip install sqlalchemy
#我在看到有支持异步的,我用的这个,但是这个没有上面的成熟
pip install fastapi-async-sqlalchemy

我们看下如何在项目中使用

SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db" #固定格式
engine = create_engine(
    SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
#connect_args 这个只有sqlite才用
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
#SessionLocal 类的每个实例都是一个数据库会话。 该类本身还不是数据库会话。
# 但是一旦我们创建了 SessionLocal 类的实例,这个实例将是实际的数据库会话。
Base = declarative_base()

我们用Base作为基础的,通过继承来创建每个数据库模型或类。我们看下

class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True, index=True)
    email = Column(String, unique=True, index=True)
    hashed_password = Column(String)
    is_active = Column(Boolean, default=True)
    items = relationship("Item", back_populates="owner")

class Item(Base):
    __tablename__ = "items"
    id = Column(Integer, primary_key=True, index=True)
    title = Column(String, index=True)
    description = Column(String, index=True)
    owner_id = Column(Integer, ForeignKey("users.id"))
    owner = relationship("User", back_populates="items")

   我们去创建了两个类,一个人,一个每一项,然后有对应的关联关系,这个表格怎么同步到数据库呢,其实很简单。

Base.metadata.create_all(bind=engine)

 我们去启动下看看,是否可以创建

 我们运行后,可以看到我们的数据库创建完毕了。

原文链接:https://www.cnblogs.com/leiziv5/p/15416780.html

我来说两句

0 条评论
登录 后参与评论

相关文章

  • FastAPI 学习之路(三十三)创建数据库

    我们之前分享分享使用FastAPI 学习之路(三十二)CORS(跨域资源共享),这次我们来看下创建数据库。

    雷子
  • FastAPI 学习之路(二十三)

    我们之前分享依赖项,我们这次还是继续分享依赖。我们本次看的是用类作为依赖的注入。

    雷子
  • FastAPI 学习之路(二十一)请求体 - 更新数据

    我们都知道,去创建请求体,更新数据我们用PUT请求,我们去试着更新下数据。

    雷子
  • FastAPI 学习之路(三十四)操作数据库

    我们之前分享分享使用FastAPI 学习之路(三十三)创建数据库,这次我们来看下如何操作数据库。

    雷子
  • FastAPI 学习之路(十五)响应状态码

    我们可以规定对应请求的状态码,那么我们应该如何来实现。在以下任意的接口路径中使用 status_code 参数来声明用于响应的 HTTP...

    雷子
  • FastAPI 学习之路(五十四)操作Redis

    我们之前分享FastAPI 学习之路(五十三)startup 和 shutdown,这次我们分享的是Fastapi操作redis。

    雷子
  • FastAPI 学习之路(二十二)

    FastAPI 提供了简单易用,但功能强大的依赖注入系统。这个依赖系统设计的简单易用,可以让开发人员轻松地把组件集成至 FastAPI。

    雷子
  • FastAPI 学习之路(二十四)子依赖项

    FastAPI 支持创建含子依赖项的依赖项。并且,可以按需声明任意深度的子依赖项嵌套层级。

    雷子
  • FastAPI 学习之路(三十五)数据库多表操作

    我们之前分享分享使用FastAPI 学习之路(三十四)操作数据库。这次我们分享多表操作。

    雷子
  • FastAPI 学习之路(五十五)将token存放在redis

    我们之前分享FastAPI 学习之路(五十四)操作Redis,这次我们把请求验证的token存放在redis中做校验。

    雷子
  • FastAPI 学习之路(十六)Form表单

    我们去实现一个登录的表单。当密码等于leizi返回用户名,其他的返回失败。

    雷子
  • FastAPI 学习之路(十四)响应模型

    我们之前分享的是Cookie,Header参数相关的。这次我们来看下响应模型。我们之前看的都是请求模型,请求参数,这次呢,我们看下响应相关的。

    雷子
  • FastAPI 学习之路(十七)上传文件

    注意,从 fastapi 导入的 Query、Path、File 等项,实际上是返回特定类的函数。

    雷子
  • FastAPI 学习之路(二十六)全局依赖项

    有时,我们要为整个应用添加依赖项。通过与定义FastAPI 学习之路(二十五)路径操作装饰器依赖项 类似的方式,可以把依赖项添加至整个 Fast...

    雷子
  • FastAPI 学习之路(十二)额外数据类型

    UUId来源 http://www.uuid.online/可以生成。

    雷子
  • FastAPI 学习之路(十八)表单与文件

    声明文件可以使用 bytes 或 UploadFile。可在一个路径操作中声明多个 File 与 Form 参数,但不能同时声明要接收 JSON 的 Body...

    雷子
  • FastAPI 学习之路(二十)接口文档配置相关

    我们都知道,fastApi给我们提供了接口文档,在我们的实际开发中,我们会有很多的接口,有些接口需要分组,比如我们对于登录注册相关的模块,可以统...

    雷子
  • FastAPI 学习之路(十九)处理错误

    4XX 状态码与表示请求成功的 2XX(200 至 299) HTTP 状态码类似。

    雷子
  • FastAPI 学习之路(十三)Cookie 参数,Header参数

    我们之前分享的分享一些数据类型。这次我们分享的是Cookie,Header参数相关的。

    雷子

扫码关注云+社区

领取腾讯云代金券