class AnswerComment(db.Model): __tablename__ = 'AnswerComment' commentId = db.Column(db.BigInteger, primary_key=True, nullable=False, autoincrement=True) parentId = db.Column(db.BigInteger, db.ForeignKey('AnswerComment.commentId', ondelete='CASCADE'), nullable=True) userId = db.Column(db.BigInteger, db.ForeignKey('User.id', ondelete='CASCADE'), nullable=False) answerId = db.Column(db.BigInteger, db.ForeignKey('Answer.answerId', ondelete='CASCADE'), nullable=False) content = db.Column(db.Text, nullable=False) commentTime = db.Column(db.DateTime, default=datetime.now(), nullable=False) # answerChildComments = db.relationship('AnswerComment', backref=db.backref('answerChildComments')) def get_user(self): return User.query.filter(User.id == self.userId).first().username def get_parent_comment(self): return AnswerComment.query.filter( self.parentId == AnswerComment.commentId).first() def get_parent_comment_user(self): return AnswerComment.query.filter( self.parentId == AnswerComment.commentId).first().get_user()
class QuestionTag(db.Model): __tablename__ = 'QuestionTag' questionId = db.Column(db.BigInteger, db.ForeignKey('Question.questionId', ondelete='CASCADE'), primary_key=True, nullable=False) tagId = db.Column(db.BigInteger, db.ForeignKey('Tag.tagId', ondelete='CASCADE'), primary_key=True, nullable=False) time = db.Column(db.DateTime, default=datetime.now(), nullable=False) def __init__(self, questionId, tagId, time): self.questionId = questionId self.tagId = tagId self.time = time # 将类转为字典,然后响应json def as_dict(obj): return dict((col.name, getattr(obj, col.name)) \ for col in class_mapper(obj.__class__).mapped_table.c) def get_object(self): return Tag.query.filter(Tag.tagId == self.tagId).first() def get_item(self): return Question.query.filter( Question.questionId == self.questionId).first()
class Blogcol(db.Model): __tablename__ = 'blogcol' id = db.Column(db.Integer, primary_key=True) # 编号 blog_id = db.Column(db.Integer, db.ForeignKey('blog.id')) # 所属博客 user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 所属用户 add_time = db.Column(db.DateTime, index=True, default=datetime.now) # 收藏博客的时间
class Comment(db.Model): __tablename__ = "comment" id = db.Column(db.Integer, primary_key=True) # 编号 content = db.Column(db.Text) # 内容 blog_id = db.Column(db.Integer, db.ForeignKey('blog.id')) # 所属博客 user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 所属用户 add_time = db.Column(db.DateTime, index=True, default=datetime.now) # 收藏博客的时间
class Moviecol(db.Model): __tablename__ = "moviecol" id = db.Column(db.Integer, primary_key=True) # 编号 movie_id = db.Column(db.Integer, db.ForeignKey('movie.id')) # 所属电影 user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 所属用户 addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间 def __repr__(self): return "<Moviecol %r>" % self.id
class Follow(db.Model): __tablename__ = 'Follow' followerId = db.Column(db.BigInteger, db.ForeignKey('User.id', ondelete='CASCADE'), primary_key=True) followedId = db.Column(db.BigInteger, db.ForeignKey('User.id', ondelete='CASCADE'), primary_key=True) followTime = db.Column(db.DateTime, default=datetime.now())
class UnlikeAnswer(db.Model): __tablename__ = 'UnlikeAnswer' userId = db.Column(db.BigInteger, db.ForeignKey('User.id', ondelete='CASCADE'), primary_key=True) answerId = db.Column(db.BigInteger, db.ForeignKey('Answer.answerId', ondelete='CASCADE'), primary_key=True) time = db.Column(db.DateTime, default=datetime.now(), nullable=False)
class Entry(db.Model): __tablename__ = 'm_entry' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(255), nullable=True) description = db.Column(db.String(255), nullable=True) createtime = db.Column(db.DateTime, default=datetime.now) result = db.Column(db.String(255), nullable=True, default="") project_id = db.Column(db.Integer, db.ForeignKey('m_project.id')) language_id = db.Column(db.Integer, db.ForeignKey('m_language.id'))
class Comment(db.Model): __tablename__ = "comment" id = db.Column(db.Integer, primary_key=True) # 编号 content = db.Column(db.Text) # 内容 movie_id = db.Column(db.Integer, db.ForeignKey('movie.id')) # 所属电影 user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 所属用户 addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间 def __repr__(self): return "<Comment %r>" % self.id
class LikeArticle(db.Model): __tablename__ = 'LikeArticle' userId = db.Column(db.BigInteger, db.ForeignKey('User.id', ondelete='CASCADE'), primary_key=True) articleId = db.Column(db.BigInteger, db.ForeignKey('Article.articleId', ondelete='CASCADE'), primary_key=True) time = db.Column(db.DateTime, default=datetime.now(), nullable=False)
class QuestionTag(db.Model): __tablename__ = 'QuestionTag' questionId = db.Column(db.BigInteger, db.ForeignKey('Question.questionId'), primary_key=True, nullable=False) tagId = db.Column(db.BigInteger, db.ForeignKey('Tag.tagId'), primary_key=True, nullable=False) time = db.Column(db.DateTime, default=datetime.now(), nullable=False)
class UserTag(db.Model): __tablename__ = 'UserTag' userId = db.Column(db.BigInteger, db.ForeignKey('User.userId'), primary_key=True, nullable=False) tagId = db.Column(db.BigInteger, db.ForeignKey('Tag.tagId'), primary_key=True, nullable=False) time = db.Column(db.DateTime, default=datetime.now(), nullable=False)
class FavoriteQuestion(db.Model): __tablename__ = 'FavoriteQuestion' questionId = db.Column(db.BigInteger, db.ForeignKey('Question.questionId'), primary_key=True, nullable=False) userId = db.Column(db.BigInteger, db.ForeignKey('User.userId'), primary_key=True, nullable=False) time = db.Column(db.DateTime, default=datetime.now(), nullable=False)
class FavoriteArticle(db.Model): __tablename__ = 'FavoriteArticle' articleId = db.Column(db.BigInteger, db.ForeignKey('Article.articleId'), primary_key=True, nullable=False) userId = db.Column(db.BigInteger, db.ForeignKey('User.userId'), primary_key=True, nullable=False) time = db.Column(db.DateTime, default=datetime.now(), nullable=False)
class Moviecol(db.Model): __tablename__ = "moviecol" id = db.Column(db.Integer, primary_key=True) # 编号 movie_id = db.Column(db.Integer, db.ForeignKey('movie.id')) # 所属视频 movie = db.relationship('Movie', backref='moviecols') # 视频收藏外键关系关联 user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 所属用户 user = db.relationship('User', backref='moviecols') # 视频收藏外键关系关联 addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间 def __repr__(self): return "<Moviecol %r>" % self.id
class ArticleTag(db.Model): __tablename__ = 'ArticleTag' articleId = db.Column(db.BigInteger, db.ForeignKey('Article.articleId'), primary_key=True, nullable=False) tagId = db.Column(db.BigInteger, db.ForeignKey('Tag.tagId'), primary_key=True, nullable=False) time = db.Column(db.DateTime, default=datetime.now(), nullable=False)
class Answer(db.Model): __tablename__ = 'Answer' answerId = db.Column(db.BigInteger, primary_key=True, nullable=False, autoincrement=True) userId = db.Column(db.BigInteger, db.ForeignKey('User.userId'), nullable=False) questionId = db.Column(db.BigInteger, db.ForeignKey('Question.questionId'), nullable=False) content = db.Column(db.Text, nullable=False) answerTime = db.Column(db.DateTime, default=datetime.now(), nullable=False)
class UserTag(db.Model): __tablename__ = 'UserTag' userId = db.Column(db.BigInteger, db.ForeignKey('User.id', ondelete='CASCADE'), primary_key=True, nullable=False) tagId = db.Column(db.BigInteger, db.ForeignKey('Tag.tagId', ondelete='CASCADE'), primary_key=True, nullable=False) time = db.Column(db.DateTime, default=datetime.now(), nullable=False) def get_object(self): return Tag.query.filter(Tag.tagId == self.tagId).first()
class Comment(db.Model): __tablename__ = "comment" id = db.Column(db.Integer, primary_key=True) # 编号 content = db.Column(db.Text) # 内容 movie_id = db.Column(db.Integer, db.ForeignKey('movie.id')) # 所属视频 movie = db.relationship('Movie', backref='comments') # 评论外键关系关联 user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 所属用户 user = db.relationship('User', backref='comments') # 评论外键关系关联 addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间 def __repr__(self): return "<Comment %r>" % self.id
class ProtestSubmission(db.Model): __tablename__ = "protestsubmission" id = db.Column(db.Integer, primary_key=True, autoincrement=True) protest_id = db.Column(db.Integer, db.ForeignKey("protest.id")) address = db.Column(db.String(200)) # lat and lng are hidden to the user on the ui lat = db.Column(db.Float(7)) lng = db.Column(db.Float(7)) description = db.Column(db.String(120)) size = db.Column(db.String(120)) issue_locality = db.Column(db.String(120)) issue_type = db.Column(db.String(120)) timestamp = db.Column(db.DateTime, default=datetime.datetime.utcnow) def to_json(self): return { 'id': self.id, 'protest_id': self.protest_id, 'address': self.address, 'lat': self.lat, 'lng': self.lng, 'description': self.description, 'size': self.size, 'issue_locality': self.issue_locality, 'issue_type': self.issue_type.split(',') if self.issue_type else [] }
class Tag(db.Model): __tablename__ = 'Tag' tagId = db.Column(db.BigInteger, primary_key=True, nullable=False, autoincrement=True) parentId = db.Column(db.BigInteger, db.ForeignKey('Tag.tagId'), nullable=True) name = db.Column(db.Unicode(30), nullable=False) description = db.Column(db.Text, nullable=False) popularity = db.Column(db.Integer, default=0, nullable=False) tagUsers = db.relationship('UserTag', foreign_keys=[UserTag.userId], backref=db.backref('users', lazy='joined'), lazy='dynamic', cascade='all, delete-orphan') articles = db.relationship('ArticleTag', foreign_keys=[ArticleTag.articleId], backref=db.backref('articles', lazy='joined'), lazy='dynamic', cascade='all, delete-orphan') problems = db.relationship('ProblemTag', foreign_keys=[QuestionTag.questionId], backref=db.backref('problems', lazy='joined'), lazy='dynamic', cascade='all, delete-orphan')
class FavoriteQuestion(db.Model): __tablename__ = 'FavoriteQuestion' questionId = db.Column(db.BigInteger, db.ForeignKey('Question.questionId', ondelete='CASCADE'), primary_key=True, nullable=False) userId = db.Column(db.BigInteger, db.ForeignKey('User.id', ondelete='CASCADE'), primary_key=True, nullable=False) time = db.Column(db.DateTime, default=datetime.now(), nullable=False) def get_object(self): return Question.query.filter( Question.questionId == self.questionId).first()
class Menu(db.Model): __tablename__ = 'menus' id = db.Column(db.Integer, primary_key=True) exclude_columns = ['created_at', 'updated_at'] auth_name = Column(db.String(32), nullable=False, index=True) path = Column(db.String(256), nullable=False) level = Column(db.Integer, nullable=True) created_at = Column(db.Date, nullable=True, default=datetime.now) updated_at = Column(db.Date, nullable=True, default=datetime.now) parent_id = db.Column(db.Integer, db.ForeignKey('menus.id')) children = db.relationship('Menu', back_populates='parent') parent = db.relationship('Menu', back_populates='children', remote_side=[id]) # role_id = Column(db.Integer, db.ForeignKey('roles.id')) # role = relationship('Role', backref=db.backref('menus', order_by=id)) # roles = relationship('Role', secondary=association_table, back_populates="menus") # 将back_populates修改为db.backref() 指定 lazy = 'dynamic' 参数,关系两侧返回的查询都可接受额外的过滤器 roles = relationship('Role', secondary=association_table, backref=db.backref("menus", lazy='dynamic')) def __init__(self, auth_name, path, **kwargs): db.Model.__init__(self, auth_name=auth_name, path=path, **kwargs)
class CourseFilter(db.Model): __tablename__ = 'course_filter' id = db.Column(db.Integer, primary_key=True, autoincrement=True) positive = db.Column(db.Boolean) user_id = db.Column(db.String(36), db.ForeignKey('user.id')) course_ids = db.relationship('CourseIdentifier', backref='filter', lazy='dynamic') def predicate(self, item): # Check if the item matches the String course_id values, not the model objects return (item in [course_id.id for course_id in self.course_ids]) ^ self.positive def apply(self, realm_ids): for realm_id in realm_ids[:]: if self.predicate(realm_id): realm_ids.remove(realm_id) def to_json(self): return { 'id': self.id, 'positive': self.positive, 'course_ids': [id.to_json() for id in self.course_ids], } def __repr__(self): return f'CourseFilter<{", ".join(str(course_id) for course_id in self.course_ids)}>'
class Order(db.Model): __tablename__ = 'orders' id = Column(db.Integer, primary_key=True) order_number = Column(db.String(200), nullable=False, index=True) trad_no = Column(db.String(200), nullable=True) invoice_titile = Column(db.String(500), nullable=True) invoice_company = Column(db.String(500), nullable=True) invoice_content = Column(db.String(500), nullable=True) consignee_address = Column(db.String(500), nullable=True) order_price = Column(db.Float, nullable=False, default=1.0) pay_status = Column( db.Enum('未支付', '已支付', '已取消'), default='未支付', doc='订单状态:未支付, 已支付, 已取消') is_send = Column(db.Boolean(), default=False, doc='False代表非热销商品') created_at = Column(db.Date, nullable=True, default=datetime.now) updated_at = Column(db.Date, nullable=True, default=datetime.now) user_id = Column(db.Integer, db.ForeignKey('users.id')) user = relationship('User', back_populates='orders') goods = relationship('Good', secondary=goods_orders, back_populates="orders", lazy='dynamic') def __init__( self, order_number, trad_no, invoice_titile, invoice_company, invoice_content, consignee_address, order_price, pay_status, is_send, **kwargs): db.Model.__init__( self, order_number=order_number, trad_no=trad_no, invoice_titile=invoice_titile, invoice_company=invoice_company, invoice_content=invoice_content, consignee_address=consignee_address, order_price=order_price, pay_status=pay_status, is_send=is_send, **kwargs)
class Posts(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True) content = db.Column(db.Text) timestamp = db.Column(DateTime, nullable=False, default=datetime.utcnow()) rid = db.Column(db.Integer, index=True, default=0) uid = db.Column(db.Integer, db.ForeignKey('user.id')) __mapper_args__ = {"order_by": timestamp.desc()}
class Photo(db.Model): __tablename__ = 'photos' id = db.Column(db.Integer, primary_key=True) photo_name = Column(db.String(500), nullable=False, index=True) # photo_url = Column(db.Url(), nullable=False, index=True) photo_url = Column(db.String(500), nullable=False, index=True) good_id = Column(db.Integer, db.ForeignKey('goods.id')) good = relationship('Good', back_populates='photos')
class User(db.Model): #用户表 id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(100), unique=True) password = db.Column(db.String(256), nullable=False) # 定义wai建 article_id = db.Column(db.Integer, db.ForeignKey('article.id'), nullable=True)
class Edit(db.Model): __tablename__ = 'edit' 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) datetime = db.Column(db.DateTime, default=datetime.now) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) user = db.relationship('User', backref=db.backref('edits'))
class Posts(db.Model): __tablename__ = 'posts' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(64)) content = db.Column(db.Text) timestamp = db.Column(db.DateTime, default=datetime.utcnow()) rid = db.Column(db.Integer, index=True, default=0) uid = db.Column(db.Integer, db.ForeignKey('user.id'))