Python日记| #6。选择颜色的第一步
#spanish #python #开发日志

现在我已经写了一般的想法,我将通过执行项目的第一步。原则上,我需要一个存储库,所以我将向您展示通过Pycharm找到的实用方法。

Github y Pycharm

首先是IDE中的一个项目,通常是:

Color Choice nuevo proyecto

然后,在上层男人的角度,我去VSC,然后我演奏“ Github上的共享项目”。田野由自己解释。

Share Project on GitHub

分享一旦分享,我将要求我进行初始提交。这是初始化分支的必要条件:

Initial Commit

这样,我们的帐户将生成一个项目。这是我要使用的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配置来运行此操作:

Configuración PyCharm 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中找到它。