标签: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