class Front_User(db.Model): __tablename__ = "front_user" # id 类型不用db.Integer类型,使用String是为了防止爆破,同时使用shortuuid进行加密 id = db.Column(db.String(100), primary_key=True, default=shortuuid.uuid) telephone = db.Column(db.String(11), nullable=False, unique=True) # 非空唯一 username = db.Column(db.String(150), nullable=False) _password = db.Column(db.String(150), nullable=False) # 密码加密操作修改字段 email = db.Column(db.String(50), unique=True) realname = db.Column(db.String(50)) avatar = db.Column(db.String(150)) # 头像,二进制数据 signatrue = db.Column(db.String(500)) # 签名 gender = db.Column(db.Enum(GenderEnum), default=GenderEnum.UNKNOW) # 性别枚举类,默认未知 join_time = db.Column(db.DateTime, default=datetime.now) # 默认当前时间 # 修改密码加密操作,manage.py映射数据库时候,使用字段保持相同,由于字段太多,使用传参形式 def __init__(self, *args, **kwargs): if 'password' in kwargs: # 如果传参中包含有 self.password = kwargs.get('password') # 获取该参数值赋值给password kwargs.pop('password') # 模型参数中是_password,不是password,弹出 # super(FrontUser, self).__init__(*args, **kwargs) # python2的写法 super().__init__(*args, **kwargs) # 密码加密操作 @property def password(self): # 密码取值 return self._password @password.setter # 密码加密 def password(self, raw_password): self._password = generate_password_hash(raw_password) # 用于验证前台登录密码是否和数据库一致,raw_password是前台登录输入的密码 def check_password(self, raw_password): result = check_password_hash( self.password, raw_password) # 相当于用相同的hash加密算法加密raw_password,检测与数据库中是否一致 return result
class Vulhub(db.Model): __tablename__ = 'vulhub' id = db.Column(db.Integer, primary_key=True, autoincrement=True) tid = db.Column(db.Integer, nullable=False) cansee = db.Column(db.Boolean, nullable=False, default=False) vulname = db.Column(db.String(128), nullable=False) addr = db.Column(db.String(64), nullable=False) serviceport = db.Column(db.String(64), nullable=False) sshport = db.Column(db.Integer, nullable=False) sshname = db.Column(db.String(128), nullable=False) sshpass = db.Column(db.String(128), nullable=False) dockerid = db.Column(db.String(128), nullable=False) status = db.Column(db.Boolean, nullable=False, default=True) detail = db.Column(db.Text)
class User(db.Model): """用户表""" id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(30), nullable=False) password = db.Column(db.String(100), nullable=False) phone = db.Column(db.String(11), unique=True, nullable=False) hobby = db.Column(db.String(30)) icon = db.Column(db.String(300)) is_delete = db.Column(db.Boolean()) email = db.Column(db.String(200)) rdatetime = db.Column(db.DateTime, default=datetime.now) def __str__(self): return self.username
class Banner(db.Model): __tablename__ = 'banner' # 图片的主键ID id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 图片的描述信息 title = db.Column(db.String(100), nullable=False) # 图片存放的路径 route = db.Column(db.String(100), nullable=False) # 轮播图主标题 main_title = db.Column(db.String(100), nullable=False) # 轮播图第一行内容 vice_title_one = db.Column(db.String(100), nullable=False) # 轮播图第二行内容 vice_title_two = db.Column(db.String(100), nullable=False) # 轮播图按钮文字 button_font = db.Column(db.String(100), nullable=False) # 按钮跳转链接 button_link = db.Column(db.String(1000), nullable=False)
class Marine_hydrology(db.Model): __tablename__ = 'marine_hydrology' # 海洋水文图片的主键ID id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 海洋水文数据集图片存放的路径 route = db.Column(db.String(100), nullable=False) # 海洋水文数据集名称 data_set_name = db.Column(db.String(100), nullable=False) # 海洋水文数据集大小 data_set_size = db.Column(db.String(100), nullable=False) # 海洋水文数据集来源 data_set_source = db.Column(db.String(1000), nullable=False) # 海洋水文数据集时间范围 data_set_time_frame = db.Column(db.String(100), nullable=False) # 海洋水文数据集空间位置 data_set_loc = db.Column(db.String(100), nullable=False) # 海洋水文数据集摘要 data_set_abstract = db.Column(db.String(10000), nullable=False)
class Abroad(db.Model): __tablename__ = 'abroad' id = db.Column(db.Integer, primary_key=True, autoincrement=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) country = db.Column(db.String(20)) #国家 city = db.Column(db.String(20)) name = db.Column(db.String(16)) age = db.Column(db.String(16)) sex = db.Column(db.String(16)) school = db.Column(db.String(20)) # 留学学校 major = db.Column(db.String(20)) # 专业 TOELF = db.Column(db.Integer) #托福 IELTS = db.Column(db.Integer) #雅思 advice = db.Column(db.Text) others = db.Column(db.Text) school_life = db.Column(db.Text) hobby = db.Column(db.Text) self_evaluation = db.Column(db.Text)
class Login_logs(db.Model): __tablename__ = 'login_logs' id = db.Column(db.Integer, primary_key=True) # id => 主键 username = db.Column(db.String(64), index=True) # 用户的用户名 browser = db.Column(db.String(124), index=True) # 用户使用的浏览器 device = db.Column(db.String(124), index=True) # 用户使用的设备 os = db.Column(db.String(124), index=True) # 用户的操作系统 ip = db.Column(db.String(64), index=True) # 用户IP地址 platform = db.Column(db.String(12), index=True) # user's platform login_date = db.Column(db.String(64), default=now())
class Contents(db.Model): __tablename__ = 'contents' novels_id = db.Column(db.Integer, db.ForeignKey('novels.id')) id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.Text, nullable=False) create_time = db.Column(db.DateTime, default=datetime.now) author = db.relationship('Novels', backref=db.backref('questions')) # class Answer(db.Model): # __tablename__ = 'answer' # id=db.Column(db.Integer,primary_key=True,autoincrement=True) # content=db.Column(db.Text, nullable=False) # create_time = db.Column(db.DateTime, default=datetime.now) # question_id=db.Column(db.Integer, db.ForeignKey('question.id')) # author_id=db.Column(db.Integer, db.ForeignKey('user.id')) # # question=db.relationship('Question',backref=db.backref('answers',order_by=create_time.desc())) # author = db.relationship('User', backref=db.backref('answers'))
class FrontUser(db.Model): __tablename__="front_user" id=db.Column(db.String(30),primary_key=True,default=shortuuid.uuid) telephone=db.Column(db.String(11),nullable=False,unique=True) username=db.Column(db.String(50),nullable=False) _password=db.Column(db.String(100),nullable=False) email=db.Column(db.String(50),unique=True) realname=db.Column(db.String(50)) avatar=db.Column(db.String(100)) signature=db.Column(db.String(100)) gender=db.Column(db.Enum(GenderEnum),default=GenderEnum.UNKNOW) join_time=db.Column(db.DateTime,default=datetime.now) @property def password(self): return self._password @password.setter def password(self,raw_password): self._password=generate_password_hash(raw_password) def check_password(self,raw_password): return check_password_hash(self.password,raw_password)
class TeacherInformation(db.Model): __tablename__ = 'teacherInfomation' Teacher_ID = db.Column(db.String(20), primary_key=True) Teacher_Name = db.Column(db.String(20), nullable=False) Teacher_Ph_Num = db.Column(db.String(20), nullable=False) Teacher_email = db.Column(db.String(20), nullable=False) Teacher_class = db.Column(db.String(20), nullable=False) Teacher_password = db.Column(db.String(20), nullable=False)
class StudentResume(db.Model): __tablename__ = 'studentResume' Student_Name = db.Column(db.String(20), primary_key=True) Student_Ph_Num = db.Column(db.String(20), nullable=False) Student_email = db.Column(db.String(20), nullable=False) Student_Resum_address = db.Column(db.String(50), nullable=False) Student_The_hitnum = db.Column(db.String(10), nullable=False) Student_discuss_address = db.Column(db.String(49), nullable=False)
class Rule(db.Model): __tablename__ = "rule" id = db.Column(db.Integer, primary_key=True, autoincrement=True) type = db.Column(db.Enum("file", "menu"), nullable=False) pid = db.Column(db.Integer, nullable=False, index=True, default=0) name = db.Column(db.String(100), unique=True, nullable=False) title = db.Column(db.String(50), nullable=False) icon = db.Column(db.String(50), nullable=False) condition = db.Column(db.String(255), nullable=False) remark = db.Column(db.String(255), nullable=False) ismenu = db.Column(db.SmallInteger, nullable=False) createtime = db.Column(db.Integer, nullable=False) updatetime = db.Column(db.Integer, nullable=False) weigh = db.Column(db.Integer, nullable=False, index=True, default=0) status = db.Column(db.String(30), nullable=False)
class EventLog(db.Model): __tablename__ = 'event_log' id = db.Column(db.Integer, primary_key=True, autoincrement=True) resource_type = db.Column(db.String(32), nullable=False) # 操作资源类型 result = db.Column(db.String(10)) # 操作结果 operation_resources_id = db.Column(db.Integer) # 操作资源ID operation_event = db.Column(db.String(255)) # 操作事件 submitter = db.Column(db.String(32), nullable=False) # 提交者 time = db.Column(db.DateTime, default=datetime.datetime.now()) # 创建时间 # 外键 # event_request_id = db.Column(db.String, db.ForeignKey(RequestLog.request_id)) # 请求ID # task_request_id = db.Column(db.String, db.ForeignKey(TaskLog.task_id)) # 任务ID event_request_id = db.Column(db.String(100)) # 请求ID task_request_id = db.Column(db.String(100)) # 任务ID
class Swtc(db.Model): __tablename__ = 'swtctop_ex' id = db.Column(db.Integer, primary_key=True, autoincrement=True) address = db.Column(db.String(256), nullable=False) swtc = db.Column(db.Numeric, nullable=False) cnt = db.Column(db.Numeric, nullable=True) hjt = db.Column(db.Numeric, nullable=True) jcc = db.Column(db.Numeric, nullable=True) vcc = db.Column(db.Numeric, nullable=True) def to_json(self): json_swtc = { 'id': self.id, 'address': self.address, 'swtc': self.swtc, 'cnt': self.cnt, 'hjt': self.hjt, 'jcc': self.jcc, 'vcc': self.vcc } return json_swtc
class FrontUser(db.Model): __tablename__ = 'front_user' id = db.Column(db.String(100), primary_key=True, default=shortuuid.uuid) telephone = db.Column(db.String(11), nullable=True) username = db.Column(db.String(50), nullable=False) _password = db.Column(db.String(100), nullable=False) email = db.Column(db.String(50), unique=True) realname = db.Column(db.String(50)) # 头像 avatar = db.Column(db.String(100)) signature = db.Column(db.String(100)) gender = db.Column(db.Enum(GenderEnum), default=GenderEnum.UNKNOW) join_time = db.Column(db.DateTime, default=datetime.now) works = db.relationship('WorkModel', backref='writer') def __init__(self, *args, **kwargs): if 'password' in kwargs: self.password = kwargs.get('password') # 把 password 取出来之后,从 kwargs 中去掉 kwargs.pop('password') super(FrontUser, self).__init__(*args, **kwargs) # password属性(方法)获取值 @property def password(self): return self._password # password属性(方法)赋值 @password.setter def password(self, raw_password): self._password = generate_password_hash(raw_password) def check_password(self, raw_password): result = check_password_hash(self.password, raw_password) return result
class FrontUser(db.Model, UserMixin): """ 定义一个类名,系统将类转换为表格,表名为front_user 定义类的属性就是表格的字段名 为了安全性,可以将用户表的password属性置为保护属性如 _password 为了方便用户操作保护属性像操作普通属性一样,需要装饰 _password 在设置密码的过程中,需要对密码加密——>调用generate_password_hash() 另外定义一个校验密码的方法check_password() 在校验密码的过程中,需要对密码解密——>调用check_password_hash() """ __tablename__ = "front_user" id = db.Column(db.String(100), primary_key=True, default=shortuuid.uuid) telephone = db.Column(db.String(11), unique=True, nullable=False) username = db.Column(db.String(50), nullable=False) _password = db.Column(db.String(100), nullable=False) email = db.Column(db.String(50), unique=True) realname = db.Column(db.String(50)) avatar = db.Column(db.String(100)) signature = db.Column(db.String(100)) gender = db.Column(db.Enum(GenderEnum), default=GenderEnum.UNKNOWN) join_time = db.Column(db.DateTime, default=datetime.now) def __init__(self, *args, **kwargs): if "password" in kwargs: self.password = kwargs.get("password") kwargs.pop("password") super().__init__(*args, **kwargs) @property def password(self): return self._password @password.setter def password(self, newpwd): self._password = generate_password_hash(newpwd) def check_password(self, rawpwd): return check_password_hash(self._password, rawpwd)
class Post(db.Model): __tablename__ = 'posts' id = db.Column(db.Integer, autoincrement=True, primary_key=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.Text, nullable=False) post_day = db.Column(db.Date, nullable=False, default=date.today()) author_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) board_id = db.Column(db.Integer, db.ForeignKey('boards.id'), nullable=False) com_num = db.Column(db.Integer, nullable=False, default=0) favor_num = db.Column(db.Integer, nullable=False, default=0) reward = db.Column(db.Integer, nullable=False, default=0) status = db.Column(db.Enum("reviewing", "normal", "blocked", "hot"), nullable=False, default="reviewing") author = db.relationship('User', backref=db.backref('articles')) board = db.relationship('Board', backref=db.backref('articles'))
class Job(db.Model): __tablename__ = 'job' id = db.Column(db.Integer, primary_key=True, autoincrement=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) city = db.Column(db.String(20)) content = db.Column(db.String(20)) salary = db.Column(db.Integer) name = db.Column(db.String(16)) age = db.Column(db.String(16)) sex = db.Column(db.String(16)) company = db.Column(db.String(20)) advice = db.Column(db.Text) others = db.Column(db.Text) school_life = db.Column(db.Text) hobby = db.Column(db.Text) self_evaluation = db.Column(db.Text)
class StudentInfomation(db.Model): __tablename__ = 'studentInfomation' Student_ID = db.Column(db.String(20), primary_key=True) Student_Name = db.Column(db.String(20), nullable=False) Student_Ph_Num = db.Column(db.String(20), nullable=False) Student_email = db.Column(db.String(20), nullable=False) Student_class = db.Column(db.String(20), ForeignKey("studentTerm.class_Name"), nullable=False) Student_password = db.Column(db.String(20), nullable=False)
class Company(db.Model, BaseModel): __tablename__ = 'company' id = db.Column(db.Integer, primary_key=True, autoincrement=True) uuid = db.Column(db.String(100), default=lambda: str(uuid4()), nullable=False) company_name = db.Column(db.String(100), nullable=False) company_address = db.Column(db.String(200)) customs_registration_code = db.Column(db.String(10), nullable=False, unique=True) organization_code = db.Column(db.String(9), nullable=False, unique=True) legal_name = db.Column(db.String(100), nullable=False) create_time = db.Column(db.DateTime, default=datetime.now)
class FrontUser(db.Model): __tablename__ = 'front_user' #这里的id如果我们还使用自动增长,就会存在商业安全隐患,用户可以根据id推算出我们网站的人数 #不使用自动增长,又要保证id的唯一性,我们就可以使用uuid #虽然uuid好用,但是它太长了,查找的效率会降低 #这时我们就可以使用shortuuid这个库,它既满足了唯一性,又没有uuid那么长 id = db.Column(db.String(100), primary_key=True, default=shortuuid.uuid) telephone = db.Column(db.String(11), nullable=False) username = db.Column(db.String(50), nullable=False) _password = db.Column(db.String(100), nullable=False) email = db.Column(db.String(50), unique=True) realname = db.Column(db.String(50)) avatar = db.Column(db.String(50))#头像 signature = db.Column(db.String(100))#签名 gender = db.Column(db.Enum(GenderEnum), default=GenderEnum.UNKNOW) join_time = db.Column(db.DateTime, default=datetime.now) #对password对应的是_password,所以要做处理 def __init__(self, *args, **kwargs): if "password" in kwargs: self.password = kwargs.get('password') kwargs.pop("password") super(FrontUser, self).__init__(*args, **kwargs) @property def password(self): return self._password @password.setter def password(self, newpwd): self._password = generate_password_hash(newpwd) def check_password(self, rawpwd): return check_password_hash(self._password, rawpwd)
class FrontUser(db.Model): __tablename__ = 'front_user' id = db.Column(db.String(100), primary_key=True, default=shortuuid.uuid) telephone = db.Column(db.String(11), nullable=False, unique=True) username = db.Column(db.String(50), nullable=False) # 加密后的密码 _password = db.Column(db.String(100), nullable=False) email = db.Column(db.String(50), unique=True) realname = db.Column(db.String(50)) avatar = db.Column(db.String(100)) signature = db.Column(db.String(100)) # 使用枚举,设定默认值为类下的属性 gender = db.Column(db.Enum(GenderEnum), default=GenderEnum.UNKNOW) # 此处使datetime.now,而不是datetime.now(),实例化对象时会自动计算时间,而后 # 者在模型创建刚使用时的时间 join_time = db.Column(db.DateTime, default=datetime.now) def __init__(self, *args, **kwargs): if "password" in kwargs: # kwargs属于字典,这里可以调用字典的内建方法,get,pop,其他内建方法有: #调用password函数,返回的self._password self.password = kwargs.get('password') kwargs.pop("password") #super的作用:将除去password的数据提交给父类去处理 super(FrontUser, self).__init__(*args, **kwargs) # 使用装饰器,将函数定义为属性,这里一方面为上面初始化时调用,另一方面为后面给属性增加方法 @property def password(self): return self._password @password.setter def password(self, newpwd): self._password = generate_password_hash(newpwd) def check_password(self, rawpwd): return check_password_hash(self._password, rawpwd)
class FrontUser(db.Model): __tablename__ = 'front_user' # id不能为自增长,因为存在商业风险,特别是id关联的url id = db.Column( db.String(100), primary_key=True, default=shortuuid.uuid ) # 这里uuid不加(),如果给了就是每次都是把执行结果当作id,而现在的需求是每次执行产生一个 telephone = db.Column(db.String(11), nullable=False, unique=True) username = db.Column(db.String(50), nullable=False) _password = db.Column(db.String(100), nullable=False) # 加入_后,变成受保护属性 email = db.Column(db.String(50), nullable=True, unique=True) realname = db.Column(db.String(50)) avatar = db.Column(db.String(100)) signature = db.Column(db.String(100)) gender = db.Column(db.Enum(GenderEnum), default=GenderEnum.UNKNOWN) join_time = db.Column(db.DateTime, default=datetime.now) # 初始化 def __init__(self, *args, **kwargs): # kwargs是关键字参数,等同于字典 if "password" in kwargs: self.password = kwargs.get('password') kwargs.pop('password') # 其他参数可以用父类去处理 super(FrontUser, self).__init__(*args, **kwargs) @property def password(self): return self._password @password.setter def password(self, newpwd): self._password = generate_password_hash(newpwd) def check_password(self, rawpwd): return check_password_hash(self._password, rawpwd)
class SubmitRecord(db.Model): """ ID: 提交编号 Time: 提交时间 Confirmed: 是否评分 Username: 提交人用户名 RealName: 提交人真实姓名 Type: 题目方向 FilePath: 文件路径 Message: 留言 """ __tablename__ = 'submitrecord' ID = db.Column(db.Integer, primary_key=True, autoincrement=True) Time = db.Column(db.String(20), nullable=False) Confirmed = db.Column(db.String(20), nullable=False) Username = db.Column(db.String(150), nullable=False) RealName = db.Column(db.String(150), nullable=False) Type = db.Column(db.String(150), nullable=False) FilePath = db.Column(db.String(150), nullable=False) Message = db.Column(db.String(350), nullable=False)
class SystemConfig(db.Model): __table_name__ = 'system_config' id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 平台名称 platform_name = db.Column(db.String(32), unique=True) # 版本信息 version_information = db.Column(db.String(32), unique=True) logo = db.Column(db.String(128), default=UPLOAD_DIR + 'logo.png') # 版权 copyright = db.Column(db.String(32), unique=True) # 用户验证模式 user_authentication_mode = db.Column(db.String(16)) # 是否开启调试模式 debug = db.Column(db.Boolean, default=False) # 日志存储 store_log = db.Column(db.String(100), default=BASE_DIR + 'app\\static\\store.log')
class FrontUser(db.Model): # FrontUser front_user __tablename__ = 'front_user' # 安全 asdasd34rsdf uuid shortuuid id = db.Column(db.String(100), primary_key=True, default=shortuuid.uuid) telephone = db.Column(db.String(11), nullable=False, unique=True) username = db.Column(db.String(50), nullable=False) _password = db.Column(db.String(100), nullable=False) email = db.Column(db.String(100), unique=True) realname = db.Column(db.String(50)) avatar = db.Column(db.String(100)) signatrue = db.Column(db.String(100)) gender = db.Column(db.Enum(GenderEnum), default=GenderEnum.UNKNOW) join_time = db.Column(db.DateTime, default=datetime.now) def __init__(self, *args, **kwargs): if "password" in kwargs: self.password = kwargs.get('password') kwargs.pop('password') # super(FrontUser, self).__init__(*args, **kwargs) super().__init__(*args, **kwargs) @property def password(self): return self._password @password.setter def password(self, raw_password): self._password = generate_password_hash(raw_password) def check_password(self, raw_password): result = check_password_hash(self.password, raw_password) return result
class FrontUser(db.Model): __tablename__ = 'front_user' id = db.Column(db.String(25), primary_key=True, unique=True, default=shortuuid.uuid) name = db.Column(db.String(20), nullable=False) _password = db.Column(db.String(200), nullable=False) mobile = db.Column(db.String(15), nullable=False, unique=True) email = db.Column(db.String(30), unique=True) gender = db.Column(db.Enum(GenderEnum), default=GenderEnum.UNKNOWN) avatar = db.Column(db.String(150), default=DEFAULT_AVATAR) signature = db.Column(db.String(50)) realname = db.Column(db.String(10)) join_time = db.Column(db.DateTime, default=datetime.now) def __init__(self, *args, **kwargs): if 'password' in kwargs: self.password = kwargs.get('password') kwargs.pop('password') super(FrontUser, self).__init__(*args, **kwargs) @property def password(self): # 通过property将password转化为方法, 以便进行操作后再存储 return self._password @password.setter def password(self, raw_password): # setter装饰器可以在创建类时取代init self._password = generate_password_hash(raw_password) def check_password(self, raw_password): result = check_password_hash(self.password, raw_password) return result
class User(db.Model): __tablename__ = 'user' #表名 id = db.Column(db.Integer, primary_key=True, autoincrement=True) user_name = db.Column(db.String(16)) password = db.Column(db.String(16)) name = db.Column(db.String(16)) sex = db.Column(db.String(16)) phone = db.Column(db.String(16)) post = db.Column(db.String(16)) def __init__(self, user_name, password, name, sex, phone, post): self.user_name = user_name self.password = password self.name = name self.sex = sex self.phone = phone self.post = post
class Question(db.Model): __tablename__ = 'question' id = db.Column(db.Integer,primary_key=True,autoincrement=True) title = db.Column(db.String(50),nullable=False) content = db.Column(db.Text,nullable=False) # 被阅读次数 viewsnum = db.Column(db.Integer,server_default=text('0')) #注意datetime.now后面不加(),加了括号就是服务器第一次运行的时间,不加则是每次创建一个模型的时候获取的当前的时间 create_time = db.Column(db.DateTime,default=datetime.now) #绑定一个外键 author_id = db.Column(db.Integer,db.ForeignKey('user.id')) author = db.relationship('Users',backref=db.backref('questions')) def increace_viewsnum(self): # 这样添加是错误的,只能是add一个完整的数据,add可以修改已有的数据 # self.viewsnum += 1 # db.session.add(self.viewsnum) # db.session.commit() question = Question.query.get(self.id) question.viewsnum += 1 db.session.add(question) db.session.commit()
class Article(db.Model): __tablename__ = 'article' id = db.Column(db.Integer, autoincrement=True, primary_key=True) title = db.Column(db.String(100)) #标题 excerpt = db.Column(db.session(200)) #摘要 category_id = db.Column(db.Integer, db.ForeignKey('category.id')) #文章与分类是一对多的关系 category = db.relationship("Category", backref='categorys') #分类表可以通过查询文章 tags = db.relationship("Tag", secondary=article_tag_table, backref='tags') #标签与文章是多对多的关系 #user 是通过取出用户表中用户字段 user_id = db.Column(db.Integer, db.ForeignKey('cms_user.id')) user = db.relationship('CMSUser', backref='cmsusers') views = db.Column(db.Integer) #tui 推荐位与文章表是一对多的关系 tui_id = db.Column(db.Integer, db.ForeignKey('tui.id')) tui = db.relationship("Tui", backref='tuis') created_time = db.Column(db.DateTime, default=datetime.now) modified_time = db.Column(db.DateTime, default=datetime.now)