Flask Development Micro Movie website (ii)

Source: Internet
Author: User
Tags add time

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)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.