数据库生成
在数据表文件中加入如下代码后运行文件即可生成数据库数据:
if __name__ == '__main__':
db.create_all() # 创建表
整个models.py数据表内容为:
models.py文件:
# coding:utf8 from flask import Flask from flask_sqlalchemy import SQLAlchemy from datetime import datetime app = Flask(__name__) # 连接数据库 app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:root@127.0.0.1/movie?charset=utf8mb4" # 如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。 app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True db = SQLAlchemy(app) # 会员 class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True) # 编号 name = db.Column(db.String(100), unique=True) # 昵称 pwd = db.Column(db.String(100)) email = db.Column(db.String(100), unique=True) phone = db.Column(db.String(100), unique=True) info = db.Column(db.Text) # 简介 face = db.Column(db.String(255)) # 头像 addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow) # 注册时间 uuid = db.Column(db.String(255), unique=True) # 唯一标识 userlogs = db.relationship("Userlog", backref="user") # 会员日志外键关系 comments = db.relationship("Comment", backref="user") # 评论外键关联关系 moviecols = db.relationship("Moviecol", backref="user") # 收藏外键关联关系 def __repr__(self): # 返回昵称对象 return '<User %r>' % self.name # 会员登录日置 class Userlog(db.Model): __tablename__ = 'userlog' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 所属会员 ip = db.Column(db.String(100)) # 登录IP addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow) # 登录时间 def __repr__(self): # 返回昵称对象 return '<Userlog %r>' % self.id # 标签 电影类型模型 class Tag(db.Model): __tablename__ = "tag" id = db.Column(db.Integer, primary_key=True) # 编号 name = db.Column(db.String(100), unique=True) # 标题 addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow) # 添加时间 movies = db.relationship("Movie", backref="tag") # 外键关联 def __repr__(self): return '<Tag %r>' % self.name # 电影 class Movie(db.Model): __tablename__ = "movie" id = db.Column(db.Integer, primary_key=True) # 编号 title = db.Column(db.String(255), unique=True) # 标题 url = db.Column(db.String(255), unique=True) # 电影链接 info = db.Column(db.Text) # 简介 logo = db.Column(db.String(255), unique=True) # 电影封面 star = db.Column(db.SmallInteger) # 电影星级 playnum = db.Column(db.BigInteger) # 电影播放量 commentnum = db.Column(db.BigInteger) # 电影评论量 tag_id = db.Column(db.Integer, db.ForeignKey("tag.id")) # 所属标签 area = db.Column(db.String(255)) # 地区 release_time = db.Column(db.Date) # 发布时间 length = db.Column(db.String(100)) # 播放时长 addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow) # 添加时间 comments = db.relationship("Comment", backref="movie") # 评论外键关联关系 moviecols = db.relationship("Moviecol", backref="movie") # 收藏外键关联关系 def __repr__(self): return '<Movie %r>' % self.title # 上映预告模型 class Preview(db.Model): __tablename__ = "preview" id = db.Column(db.Integer, primary_key=True) # 编号 title = db.Column(db.String(255), unique=True) # 标题 logo = db.Column(db.String(255), unique=True) # 电影封面 addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow) # 添加时间 def __repr__(self): return '<Preview %r>' % self.title # 评论模型 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.utcnow) # 评论时间时间 def __repr__(self): return '<Comment %r>' % self.id # 收藏模型 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.utcnow) # 收藏时间 def __repr__(self): return '<Moviecol %r>' % self.id # 权限数据模型 class Auth(db.Model): __tablename__ = "auth" id = db.Column(db.Integer, primary_key=True) # 编号 name = db.Column(db.String(100), unique=True) # 权限名称 url = db.Column(db.String(255), unique=True) # 地址 addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow) # 添加时间 def __repr__(self): return '<Auth %r>' % self.name # 角色数据模型 class Role(db.Model): __tablename__ = "role" id = db.Column(db.Integer, primary_key=True) # 编号 name = db.Column(db.String(100), unique=True) # 角色名称 auths = db.Column(db.String(600)) # 角色权限 addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow) # 添加时间 admin = db.relationship("Admin", backref='role') # 管理员外键 def __repr__(self): return '<Role %r>' % self.name # 管理员模型 class Admin(db.Model): __tablename__ = 'admin' id = db.Column(db.Integer, primary_key=True) # 编号 name = db.Column(db.String(100), unique=True) # 管理员账号 pwd = db.Column(db.String(100)) # 管理员密码 is_super = db.Column(db.SmallInteger) # 是否为超级管理员 0表示是 role_id = db.Column(db.Integer, db.ForeignKey("role.id")) # 所属角色 addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow) # 创建时间 adminlogs = db.relationship("Adminlog", backref="admin") # 管理员登录日志外键关联 oplogs = db.relationship("Oplog", backref="admin") # 管理员操作日志外键关联 def __repr__(self): # 返回昵称对象 return '<Admin %r>' % self.name # 管理员登录日置 class Adminlog(db.Model): __tablename__ = 'adminlog' id = db.Column(db.Integer, primary_key=True) admin_id = db.Column(db.Integer, db.ForeignKey('admin.id')) # 所属管理员 ip = db.Column(db.String(100)) # 登录IP addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow) # 登录时间 def __repr__(self): # 返回昵称对象 return '<Adminlog %r>' % self.id # 管理员操作日置 class Oplog(db.Model): __tablename__ = 'oplog' id = db.Column(db.Integer, primary_key=True) admin_id = db.Column(db.Integer, db.ForeignKey('admin.id')) # 所属管理员 ip = db.Column(db.String(100)) # 登录IP reason = db.Column(db.String(600)) # 操作原因 addtime = db.Column(db.DateTime, index=True, default=datetime.utcnow) # 登录时间 def __repr__(self): # 返回昵称对象 return '<Oplog %r>' % self.id if __name__ == '__main__': db.create_all() # 创建表
创建角色以及管理员:
在models.py文件执行如下命令即可创建角色以及管理员账号
if __name__ == '__main__': # db.create_all() # 创建表 ''' # 创建一个角色 role = Role( name="超级管理员", auths="" ) db.session.add(role) db.session.commit() ''' ''' # 创建一个管理员admin from werkzeug.security import generate_password_hash # 一个生成密码的工具 admin = Admin( name="admin", pwd=generate_password_hash("123456"), is_super=0, role_id=1, ) db.session.add(admin) db.session.commit() '''