PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

SQLAlchemy com padrão de classe de dados não preenchendo o banco de dados postgres


Desde '' e 0 são respectivamente os valores padrão retornados de str() e int() funções, você pode usar o seguinte código para inserir esses padrões:
@dataclass
class Person:
    id: int = None
    name: str = field(default_factory=str)
    age: int = field(default_factory=int)
    hobbies: List[str] = field(default_factory=list)
    birthday: datetime = field(default_factory=datetime)

Infelizmente, por algum motivo, usando default parâmetro de field() a função não funciona como esperávamos (pode ser um bug das dataclasses backport ou um mal-entendido...). Mas você ainda pode usar o default_factory para especificar valores diferentes de '' e 0 usando lambda :
@dataclass
class Person:
    id: int = None
    name: str = field(default_factory=lambda: 'john doe')
    age: int = field(default_factory=lambda: 77)
    hobbies: List[str] = field(default_factory=list)
    birthday: datetime = field(default_factory=datetime)