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.
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.
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.
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.