zoukankan      html  css  js  c++  java
  • 测试平台系列(6) 配置flask-sqlalchemy

    配置flask-sqlalchemy

    很皮,这次用个基佬紫的主题。

    说到flask-sqlalchemy,有些人可能不太清楚是什么东西。简单的说,他就是一个orm库,帮助咱们能够更好地跟db打交道的。笔者有一篇文章有略微的介绍,可以速览一遍了解一下(其实主要是笔者才疏学浅,讲不出什么深奥的。

    既然是登录,那么肯定需要有持久化的数据。那么我们肯定需要建立用户相关的表。

    前置准备

    • 安装MySQL

      根据自己的系统(Windows/Mac/Linux)安装好对应的MySQL并设置好账号密码,这里就不教育大家怎么安装了。端口号用默认的3306即可,并且确保服务要启动成功哦!

    • 安装mysql-connector-python(mysql官方驱动)

      cmd窗口执行

    pip3 install mysql-connector-python

    配置MySQL连接信息

    • pity/config.py配置mysql连接信息
    MySQL配置
    MySQL配置

    注意: 一定要确保MySQL的库存在哦, 没有的话可以用Navicat或Datagrip新建。

    可以看出以上包含了5个重点内容,mysql的地址,端口号,用户名,密码和库名。接下来的SQLALCHEMY_DATABASE_URI代表了sql的连接信息,flask_sqlalchemy会自动根据这个变量去获取db连接等。其中mysql+mysqlconnector,代表的是试用mysql连接的方式,大家都知道Python连接mysql有很多库比如pymysql,mysqldb等。这里就是一个说明。

    至于后面的警告大家可加可不加,如果被警告得太烦了可以这样解决。

    SQLALCHEMY_DATABASE_URI = 'mysql+mysqlconnector://{}:{}@{}:{}/{}'.format(
                                        MYSQL_USER, MYSQL_PWD, MYSQL_HOST, MYSQL_PORT, DBNAME)
    • pity/app/models/__init__.py初始化db

    代码很简单,就是将app赋给SQLAlchemy从而生成一个db对象。

    from flask_sqlalchemy import SQLAlchemy

    from app import pity

    db = SQLAlchemy(pity)

    配备用户类

    • 在models目录建立用户表

    首先咱们这个平台肯定不是那种不需要登录的,因为会做一小部分的权限控制,但是肯定也不会很复杂化。所以我们可以先简略设计一下用户表

    既然是Orm,那么咱们的User表的体现即是Python中的一个类。

    因为目前,还不太了解用户表的具体需要字段。但是我们能大概设计一下这个表,首先需要的字段肯定有用户名,密码,用户id,邮箱,团队id,职位等。其他的信息比如enable(是否可用),create_time(创建时间)等信息暂时先不考虑了。后续可以随意添加。

    那么User表我的大概设计如下:

    大致讲一下吧,大概就创建了以上几个字段。unique是字段是否唯一(可重复),primary key自然就是主键,db.String对应varchar,db.INT对应int,也就是说。现在我们要操作数据表,只需要对这个User类操作就行了,因为sqlalchemy会自动映射到对应库--对应表进行操作。

    from app.models import db
    from datetime import datetime


    class User(db.Model):
        id = db.Column(db.INT, primary_key=True)
        username = db.Column(db.String(16), unique=True, index=True)
        nickname = db.Column(db.String(16), unique=True, index=True)
        password = db.Column(db.String(32), unique=False)
        email = db.Column(db.String(64), unique=True, nullable=False)
        role = db.Column(db.INT, default=0, comment="0: 普通用户 1: 组长 2: 超级管理员")
        created_at = db.Column(db.DATETIME, nullable=False)
        updated_at = db.Column(db.DATETIME, nullable=False)
        deleted_at = db.Column(db.DATETIME)
        last_login_at = db.Column(db.DATETIME)

        def __init__(self, username, nickname, password, email):
            self.username = username
            self.password = password
            self.email = email
            self.nickname = nickname
            self.created_at = datetime.now()
            self.updated_at = datetime.now()
            self.role = 0

        def __repr__(self):
            return '<User %r>' % self.username
    • 在引入models的地方初始化数据表

    我们在pity/dao/__init__.py dao层初始化所有表,以后新增一个表都需要在这儿import一次

    from app.models import db
    from app.models.user import User

    db.create_all()
    • 在run.py引入dao包使得建表语句db.create_all()生效

    重启服务后可以看到出现了user表:

    后端代码地址: https://github.com/wuranxu/pity

    前端代码地址: https://github.com/wuranxu/pityWeb

    觉得有用的话可以帮忙点个Star哦QAQ

  • 相关阅读:
    JS 获取本月第一天零点时间戳并转化成yy-mm-dd
    JS 两个对象数组合并并去重
    element ui datePicker 设置当前日期之前的日期不可选
    整理一些vue elementui 问题 + 链接方法
    css 修改placeholder的颜色
    js循环内0.5s停止
    自定义border 为 dashed 时的虚线间距
    如何让浮动元素水平/垂直居中
    centos7.6设置sftp服务
    HikariCP Druid比较
  • 原文地址:https://www.cnblogs.com/we8fans/p/14497281.html
Copyright © 2011-2022 走看看