SQLAIchemy 定义模型类

定义模型类

这种模型类结构称为声明性映射,它同时定义了 Python 对象模型,以及描述的数据库元数据 在特定
数据库中存在或将要存在的真实 数据库 表。
映射从一个基类开始,并且是 通过对类的继承来创建一个简单的子类。这里的父类是:Base 模型类。
1、定义模型

# 定义所有模型的父类
class Base(DeclarativeBase):
"""每一种表都拥有的字段映射"""
create_time: Mapped[datetime] = mapped_column(insert_default=func.now(), com
update_time: Mapped[datetime] = mapped_column(insert_default=func.now(), onu
comment='记录最近修改的时间')
# 枚举类
class SexValue(enum.Enum):
MALE = ''
FEMALE = ''
# 定义员工模型类
class Employee(Base):
"""员工的模型类"""
__tablename__ = 't_emp'
# id属性, 字段。主键,自增
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
name: Mapped[str] = mapped_column(String(20), unique=True, nullable=False)
# DECIMAL(10, 2) ,10代表总位数,2代表小数点的位数。
sal: Mapped[Decimal] = mapped_column(DECIMAL(10, 2), nullable=True, comment=
bonus: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, commen
entry_date: Mapped[date] = mapped_column(insert_default=func.now(), comment=
is_leave: Mapped[bool] = mapped_column(Boolean, default=False)
gender: Mapped[SexValue]

 

 engine负责数据库迁移

# 所有的表都重新创建
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)
# 单独把某个表创建一下
Employee.__table__.drop(engine)
Employee.__table__.create(engine)

 

posted @ 2024-06-26 15:01  yongheng999  阅读(93)  评论(0)    收藏  举报