热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

flask数据库模型设计2

3.数据库模型设计 3.1构建蓝图项目目录1.前后台项目目录分析      2.蓝图构建项目目录蓝图:一个应用中或跨域应用制作组件和支持通用模式。蓝图的作用:将不同的功能模块化构建

3.数据库模型设计

 3.1构建蓝图项目目录

1.前后台项目目录分析

   flask-数据库模型设计2 flask-数据库模型设计2

 

 

2.蓝图构建项目目录

蓝图:一个应用中或跨域应用制作组件和支持通用模式。

蓝图的作用:将不同的功能模块化

构建大型应用

优化项目结构

增强可读性,易于维护

  1. 定义蓝图(app/admin/__init__.py)

From flask import Blueprint

Admin = Blueprint(“admin”,__name__)

Import views

  1. 注册蓝图(app/__init__.py)

From admin import admin as admin_blueprint

app.register_blueprint(admin_blueprint,url_prefix=”/admin”)

  1. 调用蓝图(app/admin/views.py)

from .import admin

@admin.route(“/”)

3.会员及会员登录日志数据模型设计

  1. 安装数据库连接依赖包

pip install flask-sqlalchemy

  1. 定义数据库连接

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

   app = Flask(__name__)

app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:root@localhost:3306"  #换成自己的数据库名字

app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True

db = SQLAlchemy(app)

  1. 定义会员数据模型

Id:编号、name:账号、pwd:密码、email:邮箱、phone:手机号、info:简介、face:头像

Addtime:注册时间、uuid:唯一标识符、comments:评论外键关联、userlogs:会员登录日志外键关联、moviecols:电影收藏外键关联

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') #会员日志外键关系

会员登录日志

Id:编号、

user_id:所属会员编号、

ip:最近登录ip地址、

addtime:最近登录时间

 

定义标签

Id:编号、Name:标题、Movies:电影外键关联、Addtime:添加时间

 

电影

Id:编号、title:电影标题、url:电影地址、info:电影简介、logo:电影封面、star:星级、

playnum:电影播放量、commentnum:电影评论量、tag_id:所属标签、area:地区、

release_time:发布时间、length:电影长度、addtime:添加时间、comments:电影评论外键关联、moviecols:电影收藏外键关联、

 

上映预告

 Id:编号、Name:上映预告标题、Logo:上映预告封面、Addtime:添加时间

 

评论

Id:编号、Content:评论内容、Movie_id:所属电影、User_id:所属用户、Addtime:最近登录时间

 

收藏电影:

Id:编号、Movie_id:所属电影、User_id:所属用户、Addtime:最近登录时间

 

 权限:

 Id:编号、Name:编号、URL :地址、addtime:创建时间

 

角色:

Id:编号、Name:名称、Auths:权限列表、Addtime:创建时间

 

管理员:

Id:编号、name:管理员名称、pwd:管理员密码、is_super:是否超级管理员、role_id:角色编号、addtime:创建时间、adminlogs:管理员登录日志外键关联、oplogs:操作日志外键关联。

 

管理员登录日志:

Id:编号、admin_id:所属管理员编号、ip:最近登录地址、addtime:添加时间

操作日志:

Id:编号、admin_id:所属管理员编号、ip:啊哦做地址、reason:操作原因、addtime:添加时间

models.py

#coding:utf-8
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from _datetime import datetime
import pymysql
#定义数据库连接
app = Flask(__name__) #创建实例化app对象
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:root@localhost:3306/movie"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True  #配置,如果设置True,将会追踪对象修改并且发送信号
db = SQLAlchemy(app)  #定义db,传入app对象

#定义会员数据模型
class User(db.Model):
    __tablename__ = "user"  #存入表名称
    #column字段  unique唯一
    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 "" % self.name
#会员登录日志
class Userlog(db.Model):
    __tablename__ = "userlog"  #定义表名
    id = db.Column(db.Integer,primary_key=True) #编号
    #定义外键 db.ForeignKey
    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.utcnow) #登录时间 ,默认时间

    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.utcnow)  #添加时间
    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(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.utcnow) #添加时间
    comments = db.relationship("Comment",backref='movie') #评论外键关系关联
    moviecols = db.relationship("Moviecol",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.utcnow)    #添加时间
    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.utcnow)    #添加时间
    def __repr__(self):
        return "" %self.id

#电影收藏
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.utcnow)    #添加时间
    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(100),unique=True) #名称
    url = db.Column(db.String(255),unique=True) #地址
    addtime = db.Column(db.DateTime,index=True,default=datetime.utcnow)    #添加时间
    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(100),unique=True) #名称
    auths = db.Column(db.String(600))
    addtime = db.Column(db.DateTime,index=True,default=datetime.utcnow)    #添加时间
    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(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.utcnow)    #添加时间
    adminlogs = db.relationship("Adminlog",backref='admin') #管理员登录日志外键关系关联
    oplogs = db.relationship("Oplog",backref='admin') #管理员操作日志外键关系关联
    def __repr__(self):
        return "" % self.name

#管理员登录日志
class Adminlog(db.Model):
    __tablename__ = "adminlog"  #定义表名
    id = db.Column(db.Integer,primary_key=True) #编号
    #定义外键 db.ForeignKey
    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.utcnow) #登录时间 ,默认时间
    def __repr__(self):
        return "" % self.id

#操作日志
class Oplog(db.Model):
    __tablename__ = "oplog"  #定义表名
    id = db.Column(db.Integer,primary_key=True) #编号
    #定义外键 db.ForeignKey
    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.utcnow) #登录时间 ,默认时间
    def __repr__(self):
        return "" % self.id

if __name__ == "__main__":
    #db.create_all()
    '''role = Role(
        name="超级管理员",
        auths=" "
    )
    db.session.add(role)
    db.session.commit()'''
    from werkzeug.security import generate_password_hash  #导入一个生成密码的工具
    admin = Admin(
        name="flower",
        pwd=generate_password_hash("123456"),
        is_super=0,
        role_id=1
    )
    #调用admin
    db.session.add(admin)
    db.session.commit()

  

 


推荐阅读
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
author-avatar
时尚妈咪达人都_354
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有