sql >> Base de Datos >  >> RDS >> PostgreSQL

SQLAlchemy con la clase de datos predeterminada que no llena la base de datos de postgres

Desde '' y 0 son respectivamente valores devueltos predeterminados de str() y int() funciones, podría usar el siguiente código para insertar esos valores predeterminados:

@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)

Desafortunadamente, por alguna razón, usar default parámetro de field() la función no funciona como esperábamos (podría ser un error de las dataclasses backport o un malentendido...). Pero aún puede usar default_factory para especificar valores diferentes de '' y 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)