PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

SQLAlchemy avec la valeur par défaut de dataclass ne remplissant pas la base de données postgres

Depuis '' et 0 sont respectivement les valeurs renvoyées par défaut de str() et int() fonctions, vous pouvez utiliser le code suivant pour insérer ces valeurs par défaut :

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

Malheureusement, pour une raison quelconque, utiliser default paramètre de field() la fonction ne fonctionne pas comme on pourrait s'y attendre (peut-être un bogue des dataclasses rétroportage ou un malentendu...). Mais vous pouvez toujours utiliser le default_factory pour spécifier des valeurs différentes de '' et 0 en utilisant 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)