使用数据库
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com flask-sqlalch
emy
- 配置参数可以根据官方指导
- 定义两个表模型瞧瞧,外键需要在主表关联(一对多,约束主表)
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
from datetime import datetime
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://root:123456@localhost:3306/flask_mv"
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), unique=True)
addtime = db.column(db.DateTime, index=True, default=datetime.now)
uuid = db.column(db.String(255), unique=True)
userlogs = db.relationship('UserLog', backref='user')
def __repr__(self):
return ""%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))
addtime = db.column(db.DateTime, index=True, default=datetime.now)
def __repr__(self):
return ''%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.now)
movies = db.relationship('Movie', backref='tag')
def __repr__(self):
return ''%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(100), 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(100))
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')
movcoll = db.relationship('MovCollection', backref='movie')
def __repr__(self):
return ''%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.now)
def __repr__(self):
return '' % 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.now)
def __repr__(self):
return '' % self.id
class MovCollection(db.Model):
__tablename__ = 'movcollec'
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 '' % self.id
class Auth(db.Model):
__tablename__ = 'auth'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), unique=True)
url = db.Column(db.String(100), unique=True)
addtime = db.Column(db.DateTime, index=True, default=datetime.now)
def __repr__(self):
return '' % self.name
class Role(db.Model):
__tablename__ = 'role'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), unique=True)
auths = db.Column(db.String(100))
addtime = db.Column(db.DateTime, index=True, default=datetime.now)
admin = db.relationship('Admin', backref='role')
def __repr__(self):
return '' % self.name
class Admin(db.Model):
__tablename__ = 'admin'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), unique=True)
pwd = db.Column(db.String(300))
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)
adminlog = db.relationship('AdminLog', backref='admin')
operatelog = db.relationship('OperateLog', backref='admin')
def __repr__(self):
return '' % 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))
addtime = db.Column(db.DateTime, index=True, default=datetime.now)
def __repr__(self):
return '' % self.id
class OperateLog(db.Model):
__tablename__ = 'operatelog'
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(500))
addtime = db.Column(db.DateTime, index=True, default=datetime.now)
def __repr__(self):
return '' % self.id
- 注意有些字段的长度要给够,这是设计阶段的问题,后期不建议修改!