现在我已经写了一般的想法,我将通过执行项目的第一步。原则上,我需要一个存储库,所以我将向您展示通过Pycharm找到的实用方法。
Github y Pycharm
首先是IDE中的一个项目,通常是:
然后,在上层男人的角度,我去VSC,然后我演奏“ Github上的共享项目”。田野由自己解释。
分享一旦分享,我将要求我进行初始提交。这是初始化分支的必要条件:
这样,我们的帐户将生成一个项目。这是我要使用的repositorio。
HI Mundo(API版本)
您始终必须从最简单的开始才能达到复杂性,这仍然是一组功能性的简单事物,相互交互。
因此,在导入相应的软件包之后,这是我在fastapi中的Hello World:
from fastapi import FastAPI, status
app = FastAPI()
@app.get('/', status_code=status.HTTP_200_OK)
async def home():
return "hello api!"
我们必须使用他在上一篇文章中评论过的Uvicorn配置来运行此操作:
,如果我们看到“ Hello API!”在我们的http://127.0.0.1:8000/地址中,我们在上面!
坚持不懈或保持事物的艺术
该项目最重要的部分将是持久性:注册投票的用户必须存储在某个地方。
SQLite。
另一方面,对于ORM,我将使用SQLModel,librarãa开发了相同的fastapi创建者,因此兼容性是绝对的。
也就
from sqlmodel import create_engine
import os
BASE_DIR = os.path.dirname(os.path.realpath(__file__))
conn_str = 'sqlite:///' + os.path.join(BASE_DIR, 'color_choice.db')
engine = create_engine(conn_str, echo=True)
然后,我将创建允许您执行新数据库(create_db.py)的文件:
from sqlmodel import SQLModel
from storage.db import engine
print("CREATING DB.......")
SQLModel.metadata.create_all(engine)
sqlmodel使用引擎对象,其中包含我们要创建的BD的信息,然后生成它。这将导致一个空BD作为一个文件,我们将在该项目的同一raãz目录中找到,称为color_choice.db。
我们最终必须创建一个会话对象来处理每个端点的交易,因此我们返回main.py并添加:
from storage.db import engine
session = Session(bind=engine)
模型
对于SQLModel,模型是我们数据库中表的表示。目前我们没有,所以BD是空的。我们将生成将帮助我们在模式下管理选票的模型:
from sqlmodel import SQLModel, Field
from typing import Optional
class Color(SQLModel, table=True):
color_id: int = Field(default=None, primary_key=True)
color: str
class Vote(SQLModel, table=True):
user_id: str = Field(default=None, primary_key=True)
color_id_selected: Optional[int] = Field(default=None, foreign_key="color.color_id")
color_voted: bool = Field(default=False)
起初,我想到总是保持相同的颜色,但我意识到我可能会失去可扩展性。因此,我决定创建一个彩色表,而另一个则使用具有前一张表格的投票。因此,如果我决定添加颜色,甚至更改名称为现有的颜色,我可以做到。
重新创建BD
现在我们有武装模型,我们必须再次生成BD,但是在Create_db.py文件中,我们将要导入它们:
import models
我们的IDE说没有使用媒体,因为在运行 create_all(Engine)的那一刻,它将自动考虑模型类。这不是魔术发生的,而是生成继承SQLModel的类的表。
当我们查看BD时,我们现在将有两个表:颜色和投票。
结论
我们所做的一切都是很大的进步。借助武装项目和BD,我们已经可以在端点和与用户的交互作用上进行工作。与往常一样,代码可以在repositorio del proyecto中找到它。