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

简介: 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)


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


image.png


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


image.png


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


相关文章
|
4天前
|
SQL 存储 关系型数据库
【MySQL 数据库】11、学习 MySQL 中的【锁】
【MySQL 数据库】11、学习 MySQL 中的【锁】
86 0
|
4天前
|
存储 人工智能 Cloud Native
阿里云瑶池数据库训练营权益:《玩转Lindorm》学习资料开放下载!
阿里云瑶池数据库训练营权益:《玩转Lindorm》学习资料开放下载!
|
4天前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)
MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)
190 0
|
4天前
|
SQL 关系型数据库 MySQL
【MySQL 数据库】4、MySQL 事务学习
【MySQL 数据库】4、MySQL 事务学习
50 0
|
4天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
|
4天前
|
数据库
sqlserver数据库学习感悟(1)----关于group by
sqlserver数据库学习感悟(1)----关于group by
8 0
|
4天前
|
API 数据库 Python
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
|
4天前
|
关系型数据库 MySQL API
Python web框架fastapi数据库操作ORM(一)
Python web框架fastapi数据库操作ORM(一)
|
4天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
ava从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
|
4天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信