1. Installing a database Connection dependency package
pip install flask-sqlalchemy
2. Create a Movie Database
On the CentOS virtual machine,进入MaridDB数据库提示符,创建movie数据库
create database movie
3. Defining MARIDDB Database connections
In the app directory, __init__.py文件
add the following:
# _*_coding:utf-8_*_from flask import Flask, render_templatefrom flask_sqlalchemy import SQLAlchemyimport pymysql# 实例化Flask类得到app对象app = Flask(__name__)# 定义连接的数据库app.config[‘SQLALCHEMY_DATABASE_URI‘] = "mysql+pymysql://root:[email protected]:3306/movie"# 如果设置成True(默认情况),Flask-SQLAlchemy将会追踪对象的修改并且发送信号# 这需要额外的内存,如果不必要的可以禁用app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS‘] = True# 定义secret_keyapp.config[‘SECRET_KEY‘] = "6bd749587aad49399f674b202a07d56f"db = SQLAlchemy(app)
4. Defining Data Model Classes
Create a models.py file in the app directory with the file content
# _*_coding:utf-8_*_from datetime import datetimefrom app import db
4.1 Defining the Member data model
# member Class User (DB). Model): __tablename__ = ' user ' # defines the name ID = db of the user table in the database. Column (db. Integer, primary_key=true) # user number name = db. Column (db. String (+), unique=true) # What is called PWD = db. Column (db. String (100)) # Password email = db. Column (db. String (+), unique=true) # Mailbox phone = db. Column (db. String (one), unique=true) # user Mobile number info = db. Column (db. Text) # personality profile face = db. Column (db. String (255), unique=true) # Avatar Addtime = db. Column (db. DateTime, Index=true, Default=datetime.utcnow) # register Time UUID = db. Column (db. String (255), Unique=true) # uniquely identifies userlogs = Db.relationship ("Userlog", backref= ' user ') # member login Log foreign Key Relationship Association Commen ts = db.relationship (' Comment ', backref= ' user ') # Comment foreign Key Relationship association Moviecols = db.relationship (' Moviecol ', backref= ' user ' # Movie Collection Foreign key Relationship Association # return definition Type def __repr__ (self): return "<user%r>"% self.name # detect password, determine whether the user entered the password with the data The password of the user saved in the vault is the same def check_pwd (self,pwd): From werkzeug.security import cheCk_password_hash return Check_password_hash (SELF.PWD,PWD)
4.2 Defining a member login log data Model
# 会员登录日志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 Defining the Label data model
# 电影标签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 Defining the Movie data model
# Movies Class movie (db. Model): __tablename__ = ' movie ' # defines the name ID = db of the movie table in the database. Column (db. Integer, Primary_key=true) # number title = db. Column (db. String (255), unique=true) # title URL = db. Column (db. String (255), unique=true) # Address info = db. Column (db. Text) # Profile logo = db. Column (db. String (255), unique=true) # cover star = db. Column (db. Smallinteger) # star Playnum = db. Column (db. BigInteger) # Play Volume Commentnum = db. Column (db. BigInteger) # comment Volume tag_id = db. Column (db. Integer, Db. ForeignKey (' tag.id ') # belongs to label area = db. Column (db. String (255)) # Release Area Release_time = db. Column (db. Date) # release time length = db. Column (db. String (100)) # play Time Addtime = db. Column (db. DateTime, Index=true, Default=datetime.now) # Add Time comments = db.relationship (' Comment ', backref= ' movie ') # comment foreign Key Relationship Association Moviecols = db.relationship (' Moviecol ', backref= ' movie ') # Favorites Foreign Key Relationship Association def __REPR__ (self): return "<movie%r > "% self.title
4.5 Defining the release preview data model
# 上映预告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 Defining the movie review data Model
# 电影评论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 Defining a Movie collection data model
# 电影收藏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 Defining the Permissions Data model
# 权限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 Defining the role data model
# 角色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 Defining the Administrator data Model
# 管理员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.name def check_pwd(self, pwd): from werkzeug.security import check_password_hash return check_password_hash(self.pwd, pwd)
4.11 Defining the Administrator logon log data model
# 管理员登录日志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.now) # 登录时间 def __repr__(self): return "<Adminlog %r>" % self.id
4.12 Defining user Action Logs
# 操作日志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.now) # 登录时间 def __repr__(self): return "<Oplog %r>" % self.id
Save all model classes in the models.py file
5. Create a database
In the models.py文件
,定义main函数,在MariaDB数据库中生成前面定义的模型表
if __name__ == ‘__main__‘: db.create_all()
单独执行models.py文件,在MariaDB数据库的movie数据库中创建数据表
Database creation complete, enter MariaDB数据库提示符
, view created data table
Flask Development Micro Movie website (ii)