class Thread(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(80)) description = db.Column(db.String(255)) created_by = db.Column(db.String(80)) date_created = db.Column(db.DateTime(), default=datetime.utcnow) replies = db.relationship("Reply", backref='thread', lazy='dynamic')
class About(BaseModel): __tablename__ = "about" title = db.Column(db.VARCHAR(250), nullable=False) sub_title = db.Column(db.TEXT, nullable=False) button_text = db.Column(db.VARCHAR(50), nullable=False) button_url = db.Column(db.TEXT, nullable=True)
class UserToRole(db.Model): """用户-角色多对多关系表""" __tablename__ = "permission_user_to_role" u_id = db.Column(db.Integer, db.ForeignKey("users.id"), primary_key=True) r_id = db.Column(db.Integer, db.ForeignKey("permission_role.id"), primary_key=True)
class Record(db.Model): """记录表""" __tablename__ = 'records' id = db.Column(db.Integer, primary_key=True, autoincrement=True) ip = db.Column(db.String(20), nullable=False, unique=True) ips = db.relationship('Article', secondary=UserLikeArticle.__table__)
class ServiceItem(BaseModel): __tablename__ = "serviceitem" icon = db.Column(db.TEXT, nullable=True) title = db.Column(db.TEXT, nullable=True) text = db.Column(db.TEXT, nullable=True) service_id = db.Column(db.INT, db.ForeignKey('services.id')) service = db.relationship('Service', backref='services', lazy=True)
class Flink(db.Model): """友情链接表""" __tablename__ = 'flinks' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(20), nullable=False) url = db.Column(db.String(100), nullable=False)
class Menu(BaseModel): __tablename__ = "menu" name = db.Column(db.VARCHAR(50), nullable=False) url = db.Column(db.TEXT, nullable=True) def __init__(self, name=None, url=None): self.name = name self.url = url
class PermissionToRole(db.Model): """权限-角色多对多关系表""" __tablename__ = 'permission_to_role' p_id = db.Column(db.Integer, db.ForeignKey("permission_permission.id"), primary_key=True) r_id = db.Column(db.Integer, db.ForeignKey("permission_role.id"), primary_key=True)
class ArticleToTag(db.Model): """标签与文章关系表""" __tablename__ = 'article_to_tag' article_id = db.Column(db.Integer, db.ForeignKey('article_article.id'), primary_key=True) tag_id = db.Column(db.Integer, db.ForeignKey('article_tag.id'), primary_key=True)
class Permission(db.Model): """权限表""" __tablename__ = 'permission_permission' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(50), nullable=False) strcode = db.Column(db.String(50), nullable=False) roles = db.relationship("Role", secondary=PermissionToRole.__table__) menu = db.relationship("Menu", uselist=False) handler = db.relationship("Handler", uselist=False)
class UserLikeArticle(db.Model): """点赞表""" __tablename__ = 'article_user_like' ip_id = db.Column(db.Integer, db.ForeignKey('records.id'), nullable=False, primary_key=True) article_id = db.Column(db.Integer, db.ForeignKey('article_article.id'), nullable=False, primary_key=True)
class Role(db.Model): """角色表""" __tablename__ = 'permission_role' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(50), nullable=False) #角色表和用户表多对多查询关系 users = db.relationship("User", secondary=UserToRole.__table__) #角色表和权限表多对多查询关系 permissions = db.relationship("Permission", secondary=PermissionToRole.__table__)
class Tag(db.Model): """标签表""" __tablename__ = 'article_tag' id = db.Column(db.Integer, primary_key=True) uuid = db.Column(db.String(36), unique=True, default=lambda: str(uuid4())) name = db.Column( db.String(50), unique=True, ) create_time = db.Column(db.DateTime, index=True, default=datetime.now) # 建立orm查询关系,标签表与文章表的多对多关系 articles = db.relationship('Article', secondary=ArticleToTag.__table__)
class Category(db.Model): """分类表""" __tablename__ = 'article_category' id = db.Column(db.Integer, primary_key=True) uuid = db.Column(db.String(36), unique=True, default=lambda: str(uuid4())) name = db.Column( db.String(50), unique=True, ) create_time = db.Column(db.DateTime, index=True, default=datetime.now) # 建立orm查询关系,分类表与文章表的一对多关系 articles = db.relationship('Article', backref='category')
class Header(BaseModel): __tablename__ = "header" background_image = db.Column(db.TEXT, nullable=True) title = db.Column(db.TEXT, nullable=False) sub_title = db.Column(db.TEXT, nullable=False) button_text = db.Column(db.VARCHAR(50), nullable=False) button_url = db.Column(db.TEXT, nullable=True) def __init__(self, background_image, title, sub_title, button_text, button_url): self.background_image = background_image self.title = title self.sub_title = sub_title self.button_text = button_text self.button_url = button_url
class Menu(db.Model): """ 页面中元素菜单显示对应的权限 """ __tablename__ = 'permission_menu' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(50), nullable=False) p_id = db.Column(db.Integer, db.ForeignKey("permission_permission.id"), unique=True, nullable=False) permission = db.relationship("Permission", uselist=False) @classmethod def by_name(cls, name): return cls.query.filter_by(name=name).first()
class User(db.Model): """用户表""" __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True, autoincrement=True) uuid = db.Column(db.String(36), unique=True, nullable=False, default=lambda: str(uuid4())) username = db.Column(db.String(50), nullable=False) email = db.Column(db.String(50)) _password = db.Column('password', db.String(200)) last_login_time = db.Column(db.DateTime) login_num = db.Column(db.Integer, default=0) create_time = db.Column(db.DateTime) avatar_hash = db.Column(db.String(32)) articles = db.relationship('Article', backref='users') comments = db.relationship('Comment', backref='users') roles = db.relationship("Role", secondary=UserToRole.__table__) def _hash_password(self, password): return pbkdf2.crypt(password, iterations=0x2537) @property def password(self): return self._password @password.setter def password(self, password): self._password = self._hash_password(password) def auth_password(self, other_password): if self._password is not None: return self.password == pbkdf2.crypt(other_password, self.password) else: return False def gravatar_hash(self): return hashlib.md5(self.email.lower().encode('utf-8')).hexdigest() def gravatar(self, size=100, default='identicon', rating='g'): url = 'https://secure.gravatar.com/avatar' hash = self.avatar_hash or self.gravatar_hash() return '{url}/{hash}?s={size}&d={default}&r={rating}'.format( url=url, hash=hash, size=size, default=default, rating=rating) @classmethod def by_emial(cls, email): return cls.query.filter_by(email=email).first()
class Product(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), unique=True) price = db.Column(db.Integer) stock = db.Column(db.Integer) description = db.Column(db.String(500)) image = db.Column(db.String(100)) type = db.Column(db.String(25)) live = db.Column(db.Boolean) orders = db.relationship('Order', backref='product', lazy=True)
class Cars(db.Model): __tablename__ = "cars" car_id = db.Column(db.Integer, primary_key=True) model = db.Column(db.String(length=16), nullable=False) mileage = db.Column(db.Integer) manufacturer = db.Column(db.String(30), nullable=False) vin = db.Column(db.String(20), unique=True, nullable=False) gearbox = db.Column(db.String(10)) price = db.Column(db.Integer, nullable=False) power = db.Column(db.Integer) volume = db.Column(db.Float(4)) dealer_id = db.Column(db.Integer, ForeignKey("dealers.dealer_id"), nullable=False) relationship("Dealers", foreign_keys=[dealer_id]) def __init__(self, model, mileage, manufacturer, vin, gearbox, price, power, volume, dealer_id): self.model = model self.mileage = mileage self.manufacturer = manufacturer self.vin = vin self.gearbox = gearbox self.price = price self.power = power self.volume = volume self.dealer_id = dealer_id def __repr__(self): return f"{self.vin}" def save_to_db(self) -> None: db.session.add(self) db.session.commit() def delete_from_db(self) -> None: db.session.delete(self) db.session.commit()
class User(db.Model, UserMixin): """The user model database""" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255)) username = db.Column(db.String(255), unique=True) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) active = db.Column(db.Boolean()) confirmed_at = db.Column(db.DateTime(), default=datetime.utcnow) roles = db.relationship("Role", secondary=roles_users, backref=db.backref('users', lazy='dynamic')) replies = db.relationship("Reply", backref="user", lazy="dynamic")
class BaseModel(db.Model): __abstract__ = True id = db.Column(db.INT, primary_key=True, autoincrement=True) @classmethod def all(cls): return cls.query.all() @classmethod def filter(cls): return cls.query.filter_by().first() def save(self): db.session.add(self) db.session.commit()
class Dealers(db.Model): __tablename__ = "dealers" dealer_id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(length=40), nullable=False) ogrn = db.Column(db.String(18), unique=True, nullable=False) address = db.Column(db.String(50)) segment = db.Column(db.String(10)) telephone = db.Column(db.String(12)) url = db.Column(db.String(32)) loans = db.Column(db.Boolean) loan_broker = db.Column(db.String(40)) used_cars = db.Column(db.Boolean) relationship("Cars") def __init__(self, name, ogrn, address, segment, telephone, url, loans, loan_broker, used_cars): self.name = name self.ogrn = ogrn self.address = address self.segment = segment self.telephone = telephone self.url = url self.loans = loans self.loan_broker = loan_broker self.used_cars = used_cars def __repr__(self): return f"{self.name}" def save_to_db(self) -> None: db.session.add(self) db.session.commit() def delete_from_db(self) -> None: db.session.delete(self) db.session.commit()
class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) username = db.Column(db.String(80), unique=True) password = db.Column(db.String(255)) image = db.Column(db.String(255)) joined_date = db.Column(db.String(255)) tweets = db.relationship("Tweets", backref='user', lazy='dynamic') following = db.relationship('User', secondary=followers, primaryjoin=(followers.c.follower_id == id), secondaryjoin=(followers.c.followee_id == id),backref=db.backref('followers', lazy='dynamic'), lazy='dynamic') my_followers = db.relationship('User', secondary=followers, primaryjoin=(followers.c.followee_id == id), secondaryjoin=(followers.c.follower_id == id), backref=db.backref('followees', lazy='dynamic'), lazy='dynamic')
class Comment(db.Model): """一级评论表""" __tablename__ = 'article_comment' id = db.Column(db.Integer, primary_key=True) uuid = db.Column(db.String(36), unique=True, nullable=False, default=lambda: str(uuid4())) content = db.Column(db.Text) create_time = db.Column(db.DateTime, index=True, default=datetime.now) # 与文章表建立外键关系 article_id = db.Column( db.Integer, db.ForeignKey('article_article.id', ondelete="CASCADE")) # 与用户表建立外键关系 user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
class Reply(db.Model): id = db.Column(db.Integer, primary_key=True) thread_id = db.Column(db.Integer, db.ForeignKey('thread.id')) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) message = db.Column(db.String(200)) date_created = db.Column(db.DateTime(), default=datetime.utcnow)
from create_app import db from tweets.models import Tweets followers = db.Table('followers', db.Column('follower_id', db.Integer, db.ForeignKey('user.id')), db.Column('followee_id', db.Integer, db.ForeignKey('user.id'))) class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) username = db.Column(db.String(80), unique=True) password = db.Column(db.String(255)) image = db.Column(db.String(255)) joined_date = db.Column(db.String(255)) tweets = db.relationship("Tweets", backref='user', lazy='dynamic') following = db.relationship('User', secondary=followers, primaryjoin=(followers.c.follower_id == id), secondaryjoin=(followers.c.followee_id == id),backref=db.backref('followers', lazy='dynamic'), lazy='dynamic') my_followers = db.relationship('User', secondary=followers, primaryjoin=(followers.c.followee_id == id), secondaryjoin=(followers.c.follower_id == id), backref=db.backref('followees', lazy='dynamic'), lazy='dynamic')
class AdminLogin(db.Model): id = db.Column(db.Integer, primary_key=True) user = db.Column(db.String(5)) password = db.Column(db.String(255))
class Contact(BaseModel): __tablename__ = "Contacs" icon = db.Column(db.VARCHAR(50), nullable=True) text = db.Column(db.TEXT, nullable=True)
class Footer(BaseModel): __tablename__ = "footer" title = db.Column(db.VARCHAR(50), nullable=False) text = db.Column(db.TEXT, nullable=True) copyrigh = db.Column(db.TEXT, nullable=True)
class Portfolio(BaseModel): __tablename__ = "portfolio" image = db.Column(db.TEXT, nullable=True) project_name = db.Column(db.VARCHAR(50), nullable=False)