Oi Jaeder! Como você está?
Peço desculpas por demorar a te responder.
Para estes casos em que as colunas possuem valores fixos e pouco mutáveis, é comum nas linguagens de programação nós representarmos elas por enumeradores, visto que não há necessidade de se criar uma entidade exclusiva para elas.
Por exemplo, você citou estado civil, este campo dificilmente vai ser algo diferente de Solteiro, Casado, Viúvo, Separado Judicialmente ou Divorciado, pois estes são os únicos previstos na legislação brasileira.
A utilização de enumeradores no Python se dá como no exemplo abaixo:
from enum import Enum
# Definindo o enumerador
class EstadoCivil(Enum):
SOLTEIRO = 'Solteiro'
CASADO = 'Casado'
VIUVO = 'Viúvo'
SEPARADO = 'Separado Judicialmente'
DIVORCIADO = 'Divorciado'
# Exemplo Utilizando o enumerador
print(EstadoCivil.SEPARADO) # Saída: GrauInstrucao.SEPARADO
print(EstadoCivil.SEPARADO.value) # Saída: Separado Judicialmente
Quando persistimos estes dados no banco de dados (no seu caso, o Postgres), a forma que este valor será armazenado dependerá da sua infraestrutura, podendo ser, por exemplo:
- Um número inteiro, onde 0 = solteiro, 1 = casado, 2 = viúvo, etc.
- Pode ser o membro do enumerador, salvo em um campo do tipo varchar, que no exemplo poderia ser: SOLTEIRO, CASADO, VIUVO, SEPARADO, etc.
- E também pode ser, só que em casos pouco comuns, o valor do enumerador, também varchar, como no exemplo: Solteiro, Casado, Viúvo, Separado Judicialmente, etc.
Vou deixar aqui a documentação de enum
do Python, caso você tenha interesse em se aprofundar:
Espero ter dado um bom ponto de partida para a solução de seu problema, Jaeder!
Forte abraço.