Skip to content

Models

Defining a model

from mydborm import BaseModel, IntField, StrField, BoolField, FloatField

class User(BaseModel):
    __tablename__ = "users"
    id       = IntField(primary_key=True)
    username = StrField(max_length=100, nullable=False)
    email    = StrField(max_length=255, nullable=False, unique=True)
    active   = BoolField(default=True)
    score    = FloatField(nullable=True)

Field types

Field MySQL YugabyteDB Python type
IntField INT INTEGER int
StrField VARCHAR(n) VARCHAR(n) str
TextField TEXT TEXT str
BoolField TINYINT(1) BOOLEAN bool
FloatField FLOAT FLOAT float
DecimalField DECIMAL(p,s) DECIMAL(p,s) Decimal
DateField DATE DATE date
DateTimeField DATETIME TIMESTAMP datetime
JSONField JSON JSONB dict
ForeignKeyField INT INTEGER int

Validators

from mydborm import EmailValidator, RangeValidator, ChoiceValidator

class Profile(BaseModel):
    __tablename__ = "profiles"
    id    = IntField(primary_key=True)
    email = StrField(validators=[EmailValidator()])
    age   = IntField(validators=[RangeValidator(0, 150)])
    role  = StrField(validators=[ChoiceValidator(["admin", "user"])])