07-02 管理员后台账号模块开发 登陆退出准备工作,数据库GUI工具演示
账号登录退出功能数据库准备工作
数据库的建表操作linux和windows操作系统都一样.
步骤1: 新建数据库, 并进入该数据库
数据库名:food_db
CREATE DATABASE `food_db` DEFAULT CHARACTER SET = `utf8mb4`;
mysql> CREATE DATABASE `food_db` DEFAULT CHARACTER SET = `utf8mb4`; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | food_db | | mydb1 | | mysql | | performance_schema | | sys | +--------------------+ 6 rows in set (0.00 sec) mysql> use food_db Database changed mysql> CREATE TABLE `user` ( -> `uid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户uid', -> `nickname` varchar(100) NOT NULL DEFAULT '' COMMENT '用户名', -> `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机号码', -> `email` varchar(100) NOT NULL DEFAULT '' COMMENT '邮箱地址', -> `sex` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:男 2:女 0:没填写', -> `avatar` varchar(64) NOT NULL DEFAULT '' COMMENT '头像', -> `login_name` varchar(20) NOT NULL DEFAULT '' COMMENT '登录用户名', -> `login_pwd` varchar(32) NOT NULL DEFAULT '' COMMENT '登录密码', -> `login_salt` varchar(32) NOT NULL DEFAULT '' COMMENT '登录密码的随机加密秘钥', -> `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1:有效 0:无效', -> `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', -> `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', -> PRIMARY KEY (`uid`), -> UNIQUE KEY `login_name` (`login_name`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表(管理员)'; Query OK, 0 rows affected (0.25 sec) mysql> show tables -> ; +-------------------+ | Tables_in_food_db | +-------------------+ | user | +-------------------+ 1 row in set (0.00 sec)
步骤2:新建管理员数据表
表名: user
建表语句如下:
CREATE TABLE `user` ( `uid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户uid', `nickname` varchar(100) NOT NULL DEFAULT '' COMMENT '用户名', `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机号码', `email` varchar(100) NOT NULL DEFAULT '' COMMENT '邮箱地址', `sex` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:男 2:女 0:没填写', `avatar` varchar(64) NOT NULL DEFAULT '' COMMENT '头像', `login_name` varchar(20) NOT NULL DEFAULT '' COMMENT '登录用户名', `login_pwd` varchar(32) NOT NULL DEFAULT '' COMMENT '登录密码', `login_salt` varchar(32) NOT NULL DEFAULT '' COMMENT '登录密码的随机加密秘钥', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1:有效 0:无效', `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', PRIMARY KEY (`uid`), UNIQUE KEY `login_name` (`login_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表(管理员)';
步骤3:使用 flask-sqlacodegen 扩展 方便快速生成 ORM model
步骤3.1 pip install flask-sqlacodegen
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple flask-sqlacodegen
步骤3.2 使用方法, 进入项目目录,执行如下命令
flask-sqlacodegen 'mysql://root:@127.0.0.1/food_db' --outfile "common/models/model.py" --flask
flask-sqlacodegen 'mysql://root:密码@127.0.0.1/food_db' --tables user --outfile "common/models/user.py" --flask
如果报错:ModuleNotFoundError: No module named 'MySQLdb', 则需要pip安装"mysqlclient"
执行命令:
如果没有进入项目目录会报错:FileNotFoundError: [Errno 2] No such file or directory: 'common/models/User.py'
flask-sqlacodegen 'mysql://root:root@127.0.0.1/food_db' --tables user --outfile "common/models/User.py" --flask
自动生成了User.py
步骤4: 修改自动生成的model中的db变量
from application import db
步骤5:修改配置文件
SQLALCHEMY_DATABASE_URI = 'mysql://root:对应root的密码@127.0.0.1/food_db?charset=utf8mb4'
步骤6:开始写代码
接下来,开始写登录退出的代码 参考07-03 & 04 用户登录退出