Nessa primeira aula da PSW 12 desenvolvemos um projeto com Python e SQLModel usando a arquitetura MVT.

E nesse material você encontra algumas explicações extras sobre o SQLModel.

SQLModel

O SQLModel é um novo ORM em Python, criado por Tiangolo, o mesmo desenvolvedor do FastAPI. Ele vem sendo amplamente adotado pela comunidade devido à sua sintaxe extremamente simples e, ao mesmo tempo, por oferecer uma performance robusta.

O SQLModel é baseado em um dos ORMs mais famosos do Python, o SQLAlchemy, mas apresenta uma sintaxe muito mais intuitiva, faz uso de Type Hints e impressiona pela performance. Isso porque o SQLModel utiliza como base o Pydantic, a biblioteca de validação de dados mais usada e performática do Python.

SQLModel

from sqlmodel import SQLModel, Field, create_engine, Session, select

class User(SQLModel, table=True):
    id: int = Field(default=None, primary_key=True)
    name: str
    email: str

SQLAlchemy

from sqlalchemy import create_engine, Column, Integer, String, Table, MetaData
from sqlalchemy.orm import declarative_base, Session

Base = declarative_base()

# Define o modelo
class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String, nullable=False)
    email = Column(String, nullable=False)

No exemplo acima, comparamos a diferença entre dois códigos para a criação de uma tabela User. Observe que o SQLModel utiliza Type Hints para definir o tipo das colunas, o que torna o código muito mais simples e legível.

Python Moderno

O SQLModel é totalmente baseado em Type Hints, o que o torna compatível com uma abordagem mais moderna do Python. Além disso, não é necessário aprender uma nova sintaxe, como ocorre no SQLAlchemy.

Outra vantagem do SQLModel é sua filosofia de simplicidade: embora ofereça diversas configurações opcionais, ele foi projetado para funcionar perfeitamente mesmo sem elas. Isso reduz as chances de o código quebrar, especialmente enquanto você ainda está aprendendo a tecnologia.

Pydantic

Todo model do SQLModel é, por debaixo dos panos, também uma classe do Pydantic. Por isso, você pode aproveitar, a qualquer momento, recursos como validação automática de dados, serialização e geração de documentação.

Um model do SQLModel pode ser utilizado da mesma forma que uma classe do Pydantic, com a vantagem de também poder ser tratado como uma tabela no banco de dados. Isso reduz a repetição de código na aplicação, aumentando a legibilidade e promovendo boas práticas de desenvolvimento.