标签:commit bsp 注释 status wrap string false data username
常用的字段类型表
字段 | 说明 |
映射到数据库对应类型 |
---|---|---|
Integer |
整数 |
int类型 |
String |
字符串, |
varchar类型 |
Text |
用于储存较长的Unicode文本,,理论上可以储存65535个字节 |
text类型 |
Date |
日期,存储 |
date类型 |
Time |
时间,存储 |
time类型 |
DateTime |
时间和日期,存储 |
datetime类型 |
Float |
浮点类型 |
float类型 |
Double |
双精度浮点类型,比浮点类型小数位精度更高。 |
double类型,占据64位。 |
Boolean |
布尔值 |
tinyint类型 |
Enum |
枚举类型 |
enum类型 |
DECIMAL |
保存固定精度的数据,DECIMAL(长度, 小数的位数) |
decimal类型 |
Column常用参数表
约束 |
说明 |
---|---|
primary_key |
如果设为True,该列就是表的主键 |
unique |
如果设为True,该列每个值唯一,也就是该字段不允许出现重复值 |
index |
如果设为True,为这列创建索引,用于提升查询效率 |
nullable |
如果设为True,这列允许使用空值,反之则不允许使用空值。 |
server_default |
为这列定义默认值, 会映射到表结构,默认值只支持字符串,其他类型需要db.text()方法指定 |
default |
为这列定义默认值,但是该约束并不会真正映射到表结构中,该约束只会在ORM层面实现 |
comment |
该字段的注释 |
name |
可以使用该参数直接指定字段名 |
autoincrement |
设置这个字段为自动增长的。 |
server_default常用配置
配置默认值类型 | 代码 |
---|---|
更新datatime时间 | server_default = db.text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") |
当前的datatime时间 | server_default = db.text("CURRENT_TIMESTAMP") |
字符 | server_default=‘字符‘ |
数字 | server_default=db.text(‘数字‘) |
常用关系选项
选项名 | 描述 |
backref | 在关系的另一模型中添加反向引用 |
uselist | 如果为False,不使用列表,而使用标量值,一对一关系时使用 |
order_by | 指定关系中记录的排序方式 |
secondary | 指定多对多中关系表的名字 |
secondary join | 在SQLAlchemy中无法自行决定时,指定多对多关系中的二级联结条件 |
primary join | 明确指定两个模型之间使用的联结条件 |
其中Flask中如下两个字段的默认值区分
create_time1 = db.Column(db.DateTime, default=datetime.now)
create_time2 = db.Column(db.DateTime, default=datetime.now())
两者的区别:
第一个插入的是当前时间,每条数据插入时可自动根据当前时间生成。
第二条是一个固定的时间, 程序部署的时间,所有的数据都是这个固定时间。
onupdate参数--->记录每次修改的时间
update_time = db.Column(db.DateTime, default=datetime.now,onupdate=datetime.now)
from OAPro import db from datetime import datetime class BaseModel(db.Model): """模型基类""" __abstract__ = True id = db.Column(db.Integer, primary_key=True, autoincrement=True) def save(self): session = db.session() session.add(self) session.commit() def delete(self): session = db.session() session.delete(self) session.commit() def update(self): session = db.session() session.commit() class Department(BaseModel): """部门表""" __tablename__ = ‘department‘ dep_name = db.Column(db.String(32),unique=True) dep_description = db.Column(db.Text) d_e = db.relationship(‘Employee‘, backref=‘e_d‘) d_p = db.relationship(‘Position‘, backref=‘p_d‘) class Position(BaseModel): """职位表""" __tablename__ = ‘position‘ p_name = db.Column(db.String(32)) level = db.Column(db.String(6)) # 职级 description = db.Column(db.Text) # 描述 p_department = db.Column(db.Integer, db.ForeignKey(‘department.id‘),comment=‘职位的部门‘) p_e = db.relationship(‘Employee‘, backref=‘e_p‘) p_power = db.relationship(‘Power‘,backref = ‘power_p‘,secondary=‘position_power‘) class Account(BaseModel): """账户表""" __tablename__=‘account‘ username = db.Column(db.String(32),unique=True) password = db.Column(db.String(16) ,nullable=False) is_activate = db.Column(db.SmallInteger, server_default=db.text(‘0‘)) # 是否激活 class Employee(BaseModel): """职员表""" __tablename__ = ‘employee‘ name = db.Column(db.String(32)) gender = db.Column(db.String(4)) age = db.Column(db.SmallInteger) nation = db.Column(db.String(16)) education = db.Column(db.String(16)) phone = db.Column(db.String(11)) email = db.Column(db.String(32)) photo = db.Column(db.String(32)) join_time = db.Column(db.DATE) # 入职时间 emp_position = db.Column(db.Integer, db.ForeignKey(‘position.id‘)) emp_department = db.Column(db.Integer, db.ForeignKey(‘department.id‘)) account_id = db.Column(db.Integer, db.ForeignKey(‘account.id‘)) e_n = db.relationship(‘Notice‘, backref=‘n_e‘) e_s = db.relationship(‘Salary‘, backref=‘s_e‘) e_l = db.relationship(‘Leave‘, backref=‘l_e‘) e_a = db.relationship(‘Account‘, backref=‘a_e‘, uselist=False) #一对一反向关系映射 e_power=db.relationship(‘Power‘,backref=‘power_e‘,secondary=‘employee_power‘) class Notice(BaseModel): """通告表""" __tablename__ = ‘notice‘ title = db.Column(db.String(60),comment=‘标题‘) notice_type = db.Column(db.String(32)) # 通告的类型 public_time = db.Column(db.DateTime,comment=‘发布时间‘,default=datetime.now) content = db.Column(db.Text) publisher = db.Column(db.Integer, db.ForeignKey(‘employee.id‘),comment=‘发布人‘) class Leave(BaseModel): """假条表""" __tablename__ = ‘leave‘ check_person = db.Column(db.String(32)) # 审核人 check_person_id = db.Column(db.Integer) # 审核人的id leave_time = db.Column(db.Date) # 请假时间 leave_type = db.Column(db.String(32)) # 请假类型 leave_cause = db.Column(db.String(255)) # 请假原因 leave_long = db.Column(db.SmallInteger) # 请假时长 leave_status = db.Column(db.String(16)) # 请假状态 leave_employee = db.Column(db.Integer, db.ForeignKey(‘employee.id‘)) # 请假的员工 class Power(BaseModel): """权限表""" __tablename__ = ‘power‘ power_name = db.Column(db.String(32)) # 权限名称 power_obj = db.Column(db.String(32)) # 权限对象 power_description = db.Column(db.Text) # 权限描述 class Salary(BaseModel): """工资表""" __tablename__ = ‘salary‘ give_time = db.Column(db.Date) # 发放时间 actual_amount = db.Column(db.DECIMAL(10,2)) # 实发金额 welfare_deduction = db.Column(db.DECIMAL(10,2)) # 福利扣除 tax_deduction = db.Column(db.DECIMAL(10,2)) # 个税扣除 disc_deduction = db.Column(db.DECIMAL(10,2)) # 违纪扣除 total = db.Column(db.DECIMAL(10,2)) # 总金额 subsidy = db.Column(db.DECIMAL(10,2)) # 补助 awards = db.Column(db.DECIMAL(10,2)) # 年终奖 employee_id = db.Column(db.Integer, db.ForeignKey(‘employee.id‘)) # 职位权限关系表 position_power = db.Table( ‘position_power‘,#关系表名 db.Column(‘position_id‘,db.Integer, db.ForeignKey(‘position.id‘)), db.Column(‘power_id‘,db.Integer, db.ForeignKey(‘power.id‘)) ) #员工权限关系表 employee_power = db.Table( ‘employee_power‘,#关系表名 db.Column(‘employee_id‘,db.Integer,db.ForeignKey(‘employee.id‘)), db.Column(‘power_id‘,db.Integer,db.ForeignKey(‘power.id‘))
)
标签:commit bsp 注释 status wrap string false data username
原文地址:https://www.cnblogs.com/Liu928011/p/14879121.html