1 连接数据库

  1.1 安装 flask-sqlalchemy

    flask-sqlalchemy 会让 sqlalchemy 使用起来更加方便

    pip3 install flask-sqlalchemy

    注意:如果网速比较慢可以换源(换成豆瓣的源)

  1.2 导入 SQLAlchemy

    from flask_sqlalchemy import SQLAlchemy

  1.3 导入密码加密函数和密码检查函数

    from werkzeug.security import generate_password_hash, check_password_hash

  

  1.4 创建sqlalchemy接口

    db = SQLAlchemy()

  1.5 编写实体类以及相关方法  

from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash, check_password_hash db = SQLAlchemy() class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.String(36), primary_key=True)
email = db.Column(db.String(50), unique=True)
name = db.Column(db.String(50), nullable=False)
password = db.Column(db.String(200), nullable=False) def __init__(self, id, email, name, password): # 类似与java中的构造器
self.id = id
self.email = email
self.name = name
self.password = password def set_password(self, password): # 对明文密码进行加密,返回的是加密后的密码
return generate_password_hash(password) def check_password(self, password): # 检查密码,传入的是明文密码,会将明文密码进行加密后再进行比对
return check_password_hash(self.password, password) def change_password(self, password): # 修改密码
self.password = self.set_password(password)

  1.6 在全局配置文件中配置数据连接

DB_CONFIG = {
'DRIVER': 'pymysql',
'USER': 'fury',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': 3306,
'NAME': 'test_login',
'NAME': 'test_login',
'CHARSET': 'utf8'
}
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://fury:182838@127.0.0.1:3306/test_login?charset=utf8'
# SQLALCHEMY_DATABASE_URI = 'mysql+{DRIVER}://{USER}:{PASSWORD}@{HOST}:{PORT}/{NAME}?charset={CHARSET}'.format(**DB_CONFIG);

  1.7 在Flask应用中注册sqlalchemy

    db.init_app(app) # 注册sqlalchemy

  1.8 编写数据库初始化函数

    该函数只在服务器第一次接收到请求时执行

    

  1.9 启动服务器,随便访问一个路径

    在数据库中自动创建一个名为users的表

    

3 创建数据库用户

  补充:创建数据库

    CREATE DATABASE `数据库名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

  3.1 为mysql创建用户

   create user 'fury'@'%' identified by '182838';

  3.2 为指定用户设定权限

   grant all on test_login.* to 'fury'@'%';
              fury这个用户对test_login数据库中的所有表都有权限  

  3.3 刷新权限        

    flush privileges;  

  3.4 安装的MySQL用户信息        

     root 182838
        fury 182838

  3.5 注意

    只用root用户才有权限创建用户

    好像 mysql5.7 过后就不能用这种方法创建用户啦

    

2 注册模块

  2.1 编写登陆表单 

class RegistForm(FlaskForm):
name = StringField(
label='昵称',
validators=[
InputRequired('昵称不能为空')
]
)
email = StringField(
label='邮箱',
validators=[
InputRequired('邮箱不能为空'),
Email('邮箱格式错误')
]
)
password = PasswordField(
label='密码',
validators=[
InputRequired('密码不能为空'),
Length(6, 9, '密码长度是6到9')
]
)
confirm = PasswordField(
label='确认',
validators=[
InputRequired('密码不能为空'),
EqualTo('password', '两次密码不一致')
]
)

  2.2 通过GET方式发起注册请求

    渲染请求表单

 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册模块</title>
</head>
<body>
<h4>这是注册模块</h4>
<hr />
<div>
<form action="/regist/" method="post">
<div>
<input type="hidden" name="csrf_token" value="{{ gen_token() }}" />
{# <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />#}
</div>
<div>
{{ form.name.label }}:{{ form.name() }}
</div>
<div>
{{ form.email.label }}:{{ form.email() }}
</div>
<div>
{{ form.password.label }}:{{ form.password() }}
</div>
<div>
{{ form.confirm.label }}:{{ form.confirm() }}
</div>
<div>
<button type="submit">注册</button>
</div>
</form>
</div>
</body>
</html>

  2.3 录入完注册信息后,以POST方式发起注册请求

    验证注册格式信息,以及注册信息合法性

 

3 本博客源代码

  点击前往

Flask12 数据库连接、创建数据库用户、注册模块的更多相关文章

  1. TestCase--网站创建新用户管理模块

    对于web测试,用户权限管理模块是必测的一个点,所以今天就来总结一下创建新用户管理模块的测试用例 参考图如下: 测试用例设计如下: 一.功能测试 1.  什么都不输入,单击“立即提交”,页面是否有提示 ...

  2. oracle连接方式、创建数据库用户、忘记数据库密码、用户锁定

    一.oracle六种连接方式 ①myEclipse中 打开myEclipse,window----show view----Other---输入DB点击DB browser 选中右键New.出现如下页 ...

  3. php 通过 create user 和grant 命令无法创建数据库用户和授权的解决办法

    php 通过 create user 和grant 命令无法创建数据库用户和授权的解决办法 解决办法, 通过 insert 命令的方式进行创建. 创建数据库用户: $sql= "insert ...

  4. PostgreSQL创建数据库用户

    注:版本不同,命令的执行路径可能有些不同. 一. 创建数据库用户freeswitch sudo -u postgres /usr/pgsql-9.5/bin/createuser -s -e free ...

  5. mysql创建数据库用户

    连接mysql cmd--> mysql -hlocalhost -uroot -pmypassword 退出mysql mysql> quit 也可用exit或者 \q ======== ...

  6. linux环境:创建数据库用户,表空间,启动数据库

    1.启动数据库 首先使用oracle用户登录Linux,然后在shell命令行中执行下面的命令:第一步:打开Oracle监听(先查看状态:oracle监听是否启动:lsnrctl status)$ l ...

  7. SQLSever--基础学习--创建登录用户&创建数据库用户&分配权限

    如题,本文简记一下SQL Sever里面登录用户(login)的创建,数据库用户(DBUser)的创建,以及给数据库用户分配权限(Grant). 数据库有三层保护机制: 第一层:登录用户以及登录密码的 ...

  8. Confluence 6 Oracle 创建数据库用户

    创建用户后并且指派权限: 使用 sqlplus 命令行工具通过命令行来访问 Oracle sqlplus user/password <as sysdba|as sysoper> 如果你的 ...

  9. 结合数据库登录注册模块,登录成功之后跳到WebView

    最近刚刚做了一个模块,在本地建立一个数据库,存储注册的账号,登录的时候取出,正确则登录,登录之后跳到一个webView网页. 直接上代码吧. LoginActivity.java package co ...

随机推荐

  1. Python list,tuple,dict and set

    list 有序可变的集合 查找和插入的时间随着元素的增加而增加 占用空间小,浪费内存很少 tuple 有序只读不可变.因为tuple不可变,所以代码更安全.如果可能,能用tuple代替list就尽量用 ...

  2. MySQL跳过密码登录

    第一种 1.1停止mysql服务 1.2以管理员身份运行cmd,执行以下命令 cd C:\Program Files\mysql-5.7.17-winx64\bin mysqld --skip-gra ...

  3. explain分析sql效果

    1.id:  代表select 语句的编号, 如果是连接查询,表之间是平等关系, select 编号都是1,从1开始. 如果某select中有子查询,则编号递增.如下一条语句2个结果 mysql> ...

  4. Unigui unidbgrid+unidac uniquery联合使用时产生的奇葩问题

    如下一个uniquery查询: SELECT a.id,a.userid,a.name,if(a.completed='T',CONCAT('<a  class="icons" ...

  5. java入门了解10

    1.IO: 1.File (一)注意: a.可以表示文件或者文件夹(也可称为目录) b.创建的File对象实际上不存在的文件只是代表了一个抽象路径 c.Windows中分隔符'\'('//'也可以); ...

  6. Entity Framework 学习笔记(一)之数据模型 数据库

    关于Entity Framework  数据模型 的开发有三种模式:1.引用数据库方式:2.在VS中新建EF空模型Model 方式:3.Code 方式 Entity Framework  数据模型   ...

  7. centos虚拟机启用网卡

    CentOS虚拟机安装成功后,默认开机未启用网关,通过修改配置文件,启用网卡 编辑系统配置文件,虚拟机完成后,系统安装了一个默认的网卡,即eth0,其配置文件的路径为/etc/sysconfig/ne ...

  8. node Express安装和使用

    1:在cmd命令行下执行npm install -g express,安装全局的express 2:进入需要创建项目的目录下执行express nodeExpressProject,创建express ...

  9. string(未完待续)

    1.string字符串的长度     可以用   a.length()  来测,或者是a.size() 来测 不可以用strlen(a)来求其长度, sizeof(a)是固定值16, 求的是strin ...

  10. CTreeCtrl控件

    一.HTREEITEM HTREEITEM是树中节点的句柄,也就是一个DWORD值.在树中唯一标识一个节点.它的值对于程序员其实没有什么意义,只是可以通过它找到一个节点,从而取得节点的属性,如 Get ...