1.官网demo
Fastapi 官方文档
先看一下官网
这里对这几个文件解释一下,我们不一定按照这个目录结构来处理哈,比如我的main就放在了外层,
__init__.py # 通常__init__.py文件为空,但是我们还可以为它增加其他的功能,我们在导入一个模块时候(也叫包),实际上导入的是这个模块的__init__.py文件。我们可以在__init__.py导入我们需要的模块,不需要一个个导入
crud.py # 顾名思义,处理增删改插逻辑的方法
database.py # 数据库的声明,初始化配置的地方,比如url,账户密码之类的
main.py # 启动的入口文件
models.py # 数据模型文件,和数据库的表对应
schemas.py # 可以理解为和请求对应的文件
我们可以直接把官网的demo copy到本地,安装一下依赖
pip install pymysql
pip install sqlalchemy
这样前期准备工作OK了
2.注意事项
2.1 数据 url
SQLALCHEMY_DATABASE_URL = "mysql+pymysql://root:root@localhost:3306/test"
# 格式为:mysql+pymysql://数据库用户:数据库密码@地址/数据库
2.2 删除数据库多余配置
删除 database.py中的这个配置
删除后如下:
engine = create_engine(
SQLALCHEMY_DATABASE_URL
)
2.3 建表语句
直接运行他会提示mysql 的Varchar 需要length属性,所以在models.py文件中,改动如下:
# __*__ coding : UTF-8 __*__
# Author : chaochaoxiao
# date : 2021/8/4 1:35 上午
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
from .database import Base
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
email = Column(String(255), unique=True, index=True)
hashed_password = Column(String(64))
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(255), index=True)
description = Column(String(255), index=True)
owner_id = Column(Integer, ForeignKey("users.id"))
owner = relationship("User", back_populates="items")
到此为止,运行
uvicorn main:app --reload
3.验证一下
打开 localhost:8000/docs ,找到用户的创建:
显示执行成功,到数据库看一下:
可以看到数据保存成功啦,连接mariadb也就到这里就成功啦