Flask开发微电影网站(二)
生活随笔
收集整理的這篇文章主要介紹了
Flask开发微电影网站(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.安裝數據庫連接依賴包
pip install flask-sqlalchemy2.創建movie數據庫
在CentOS虛擬機,進入MaridDB數據庫提示符,創建movie數據庫
create database movie3.定義MaridDB數據庫連接
在app目錄下的__init__.py文件中添加以下內容
# _*_coding:utf-8_*_from flask import Flask, render_template from flask_sqlalchemy import SQLAlchemy import pymysql# 實例化Flask類得到app對象 app = Flask(__name__)# 定義連接的數據庫 app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:root1234@192.168.81.10:3306/movie"# 如果設置成True(默認情況),Flask-SQLAlchemy將會追蹤對象的修改并且發送信號 # 這需要額外的內存,如果不必要的可以禁用 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True# 定義secret_key app.config['SECRET_KEY'] = "6bd749587aad49399f674b202a07d56f"db = SQLAlchemy(app)4.定義數據模型類
在app目錄下創建models.py文件,文件內容為
# _*_coding:utf-8_*_from datetime import datetime from app import db4.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_hashreturn 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)) # 最近登錄IP地址addtime = db.Column(db.DateTime, index=True, default=datetime.now) # 最近登錄時間def __repr__(self):return "<Userlog %r>" % self.id4.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.name4.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.title4.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.title4.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.id4.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.id4.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.name4.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.name4.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) # 是否為超級管理員,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.namedef check_pwd(self, pwd):from werkzeug.security import check_password_hashreturn 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)) # 登錄IPaddtime = db.Column(db.DateTime, index=True, default=datetime.now) # 登錄時間def __repr__(self):return "<Adminlog %r>" % self.id4.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)) # 登錄IPreason = 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
總結
以上是生活随笔為你收集整理的Flask开发微电影网站(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库事务的四大特性以及事务的隔离级别详
- 下一篇: CodeForces509F Progr