在大型的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)

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

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

表结构和我们设计的是一样的,这样我们就完成了创建数据库的操作,我们接下来就是看,如何去操作数据库。

文章首发在公众号,欢迎关注。

最新文章

  1. 错误"ORA-04091: table is mutating, trigger/function may not see it"的原因以及解决办法
  2. [译]Dynamics AX 2012 R2 BI系列-Cube概览
  3. UDP的坏处
  4. CentOS 7学习手册
  5. [POJ2155]Matrix(二维树状数组)
  6. i3D的一篇Unity教程中的笔记
  7. iOS - UISplitViewController
  8. .NET DLL 保护措施应用实例(百度云批量保存工具)
  9. viewpager双层嵌套,子viewpager无限循环无法手动滑动
  10. java接口实现
  11. #考研笔记#计算机之word问题
  12. Objective-C 符号化
  13. Python基本数据类型——元组和集合
  14. ROC曲线(receiver-operating-characteristic curve)-阈值评价标准(转)
  15. Bootstrap&bxslider
  16. Python+Selenium学习--alert/confirm/prompt 处理
  17. 关于UUID
  18. 【CAS单点登录视频教程】 第03集 -- 配置 tomcat的 ssl
  19. centos6.8升级python3.5.2
  20. virtualbox+vagrant学习-2(command cli)-11-vagrant PowerShell命令

热门文章

  1. Springboot 日志、配置文件、接口数据如何脱敏?老鸟们都是这样玩的!
  2. adb shell 查看当前与用户交互的 activity
  3. 基于Appium,封装自己的常用方法
  4. PyQT5基础布局管理
  5. rsync 服务搭建
  6. Python3正则表达式学习笔记
  7. Docker - 解决 docker push 上传镜像报:denied: requested access to the resource is denied 的问题
  8. epoll代码框架
  9. coreos 常见问题
  10. MySQL日志管理、备份、恢复