使用数据库
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 datetimeapp = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://root:123456@localhost:3306/flask_mv"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Truedb = 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 "<User %r>"%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 '<UserLog %r>'%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 '<UserLog %r>'%self.nameclass 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 '<Movie %r>'%self.titleclass 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
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
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 '<MovCollection %r>' % 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 '<Auth %r>' % 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 '<Role %r>' % 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 '<Role %r>' % 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 '<Role %r>' % 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 '<Role %r>' % self.id
- 注意有些字段的长度要给够,这是设计阶段的问题,后期不建议修改!