Flask开发微电影网站(二)
1.安装数据库连接依赖包
pip install flask-sqlalchemy
2.创建movie数据库
在CentOS虚拟机,进入MaridDB数据库提示符,创建movie数据库
create database movie
3.定义MaridDB数据库连接
在app目录下的__init__.py文件
中添加以下内容
# _*_coding:utf-8_*_from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
import pymysql# 实例化Flask类得到app对象
app = Flask(__name__)# 定义连接的数据库
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:root1234@192.168.81.10:3306/movie"# 如果设置成True(默认情况),Flask-SQLAlchemy将会追踪对象的修改并且发送信号
# 这需要额外的内存,如果不必要的可以禁用
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True# 定义secret_key
app.config['SECRET_KEY'] = "6bd749587aad49399f674b202a07d56f"db = SQLAlchemy(app)
4.定义数据模型类
在app目录下创建models.py文件,文件内容为
# _*_coding:utf-8_*_from datetime import datetime
from app import db
4.1 定义会员数据模型
# 会员
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(11), unique=True) # 用户手机号码info = db.Column(db.Text) # 个性简介face = db.Column(db.String(255), unique=True) # 头像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# 检测密码,判断用户输入的密码是否与数据库中保存的用户的密码相同def check_pwd(self,pwd):from werkzeug.security import check_password_hashreturn check_password_hash(self.pwd,pwd)
4.2 定义会员登录日志数据模型
# 会员登录日志
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.now) # 最近登录时间def __repr__(self):return "<Userlog %r>" % self.id
4.3 定义标签数据模型
# 电影标签
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.now) # 电影添加时间movies = db.relationship("Movie", backref='tag') # 电影外键的键值def __repr__(self):return "<Tag %r>" % self.name
4.4 定义电影数据模型
# 电影
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.now) # 添加时间comments = db.relationship('Comment', backref='movie') # 评论外键关系关联moviecols = db.relationship('Moviecol', backref='movie') # 收藏外键关系关联def __repr__(self):return "<Movie %r>" % self.title
4.5 定义上映预告数据模型
# 上映预告
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.now) # 添加时间def __repr__(self):return "<Preview %r>" % self.title
4.6 定义电影评论数据模型
# 电影评论
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
4.7 定义电影收藏数据模型
# 电影收藏
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) # 添加收藏时间def __repr__(self):return "<Moviecol %r>" % self.id
4.8 定义权限数据模型
# 权限
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(100), unique=True) # 地址addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间def __repr__(self):return "<Auth %r>" % self.name
4.9 定义角色数据模型
# 角色
class Role(db.Model):__tablename__ = 'role' # 定义用户角色表在数据库中的名称id = db.Column(db.Integer, primary_key=True) # 编号name = db.Column(db.String(128), unique=True) # 角色名称auths = db.Column(db.String(512))addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 添加时间admins = db.relationship("Admin", backref='role') # 管理员外键关系关联def __repr__(self):return "<Role %r>" % self.name
4.10 定义管理员数据模型
# 管理员
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.now)adminlogs = db.relationship('Adminlog', backref='admin') # 管理员登录日志外键关系关联oplogs = db.relationship('Oplog', backref='admin') # 管理员操作日志外键关系关联def __repr__(self):return "<Admin %r>" % self.namedef check_pwd(self, pwd):from werkzeug.security import check_password_hashreturn check_password_hash(self.pwd, pwd)
4.11 定义管理员登录日志数据模型
# 管理员登录日志
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)) # 登录IPaddtime = db.Column(db.DateTime, index=True, default=datetime.now) # 登录时间def __repr__(self):return "<Adminlog %r>" % self.id
4.12 定义用户操作日志
# 操作日志
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)) # 登录IPreason = db.Column(db.String(600)) # 操作原因addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 登录时间def __repr__(self):return "<Oplog %r>" % self.id
在models.py文件保存所有的模型类
5. 创建数据库
在models.py文件
中,定义main函数,在MariaDB数据库中生成前面定义的模型表
if __name__ == '__main__':db.create_all()
单独执行models.py文件,在MariaDB数据库的movie数据库中创建数据表
数据库创建完成,进入MariaDB数据库提示符
,查看创建的数据表
转载于:https://www.cnblogs.com/renpingsheng/p/9062166.html
Flask开发微电影网站(二)相关推荐
- Flask开发微电影网站(一)
1.用到的Flask知识 1.使用整形,浮点型,路径型,字符串型下正则表达式路由转化器 2.使用GET与POST请求,上传文件,cookie获取与响应,404处理 3.使用模板自动转义,定义过滤器,定 ...
- Flask开发微电影网站(三)
页面完成后的最终布局 电影视频网站首页面 会员登录页面 会员注册页面 点击退出和会员按钮,直接进入会员登录页面 视频播放页面 可以看到,页面共同的部分是顶部导航和底部导航 所以我们可以把页面顶部导航和 ...
- Flask开发微电影网站(五)
后台管理页面是系统管理员登录后对网站进行管理的前端页面 后台登录页面,如下图所示 管理员登录后的页面,如下图所示 管理员登录后,在右上角显示的管理员信息,如下图所示 管理员登录后,在页面中间部分的左侧 ...
- Flask开发微电影网站(七)
1.后台管理之电影管理 1.1 定义电影表单 在app的admin目录的forms.py文件中,定义电影表单 # 电影表单 class MovieForm(FlaskForm):title = Str ...
- Flask开发微电影网站(六)
1. 后台管理登录功能实现 1.1 后台管理页面登录表单LoginForm 在app的admin目录下创建forms.py文件,用来保存admin蓝图中需要使用到的表单 from flask_wtf ...
- Flask开发微电影网站(十)
1.后台管理之角色管理 1.1 角色管理之定义角色表单 在app的admin目录的forms.py文件中,定义角色表单 # 角色表单 class RoleForm(FlaskForm):name = ...
- Python-Flask开发微电影网站(二)
1.安装数据库连接依赖包 pip install flask-sqlalchemy 2.创建movie数据库 在CentOS虚拟机,进入MaridDB数据库提示符,创建movie数据库 create ...
- Flask开发微电影网站(八)
1.后台管理之电影预告管理 1.1 定义电影预告表单 在app的admin目录的forms.py文件中,定义电影预告表单 # 预告表单 class PreviewForm(FlaskForm):t ...
- Python-Flask开发微电影网站(一)
1.用到的Flask知识 1.使用整形,浮点型,路径型,字符串型下正则表达式路由转化器 2.使用GET与POST请求,上传文件,cookie获取与响应,404处理 3.使用模板自动转义,定义过滤器,定 ...
最新文章
- 在Ubuntu 14.04 64bit上进行md5加密编程
- 按下回车表示确定提交
- Web开发常规调试方法与常见问题分析
- flask小demo-数据查询
- linux下延时1ms用什么函数,Linux下1ms分辨率定时器推荐方式
- L13操作系统之树(过程)
- CentOS 6.5+Syslog-ng+LogZilla搭建中央日志服务器
- [转] 关于闰年的判断方法
- 算法:找出存在子字符串的最先位置28. Implement strStr()
- 矩阵范数的等价性(原创)
- Spring中的Bean可以绕过生命周期管理吗?
- Win7下 安全、彻底删除Orcale数据库
- Java教学视频下载(全集)
- FPGA深度学习加速(1) - Xilinx ug892-Vivado design flows overview (Vivado设计流程简述) - 阅读笔记
- 模式识别和计算机科学与技术,模式识别与智能系统
- java的inputbox,Excel|VBA的inputbox函数和inputbox方法
- java 营业执照验证_基于Java的营业执照识别示例代码-六派数据
- PS抠图之单色背景图片
- 微软巨资收购Skype 网络电话行业受关注
- http://blog.sina.com.cn/s/blog_7f5ad8c20101cnna.html#commonComment