1.安装数据库连接依赖包
pip install flask
-sqlalchemy
2.创建movie数据库
在CentOS虚拟机,进入MaridDB数据库提示符,创建movie数据库
create database movie
3.定义MaridDB数据库连接
在app目录下的__init__.py文件中添加以下内容
from flask
import Flask
, render_template
from flask_sqlalchemy
import SQLAlchemy
import pymysql
app
= Flask
(__name__
)
app
.config
['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:root1234@192.168.81.10:3306/movie"
app
.config
['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app
.config
['SECRET_KEY'] = "6bd749587aad49399f674b202a07d56f"
db
= SQLAlchemy
(app
)
4.定义数据模型类
在app目录下创建models.py文件,文件内容为
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_hash
return 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))
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
)
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 定义管理员登录日志数据模型
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))
addtime
= 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))
reason
= 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