03-06 生成数据表

数据库生成

在数据表文件中加入如下代码后运行文件即可生成数据库数据:

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()
    
    '''

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值