python连接数据库实现登录_python使用Flask操作mysql实现登录功能

用到的一些知识点:Flask-SQLAlchemy、Flask-Login、Flask-WTF、PyMySQL

这里通过一个完整的登录实例来介绍,程序已经成功运行,在未登录时拦截了success.html页面跳转到登录页面,登录成功后才能访问success。

以下是项目的整体结构图:

2018051410374113.png

首先是配置信息,配置了数据库连接等基本的信息,config.py

DEBUG = True

SQLALCHEMY_ECHO = False

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:1011@localhost/rl_project?charset=utf8'

SECRET_KEY = '*xffx93xc8wx13x0e@3xd6x82x0fx84x18xe7xd9|x04exb9(xfdxc3'

common/_init_.py

# config=utf-8

from flask_sqlalchemy import SQLAlchemy

__all__ = ['db']

db = SQLAlchemy()

数据库配置类,common/data.py

# config=utf-8

from sqlalchemy import create_engine

from sqlalchemy.sql import text

from config import SQLALCHEMY_DATABASE_URI, SQLALCHEMY_ECHO

def db_query(sql, settings=None, echo=None):

if settings is None:

settings = SQLALCHEMY_DATABASE_URI

if echo is None:

echo = SQLALCHEMY_ECHO

return create_engine(settings, echo=echo).connect().execute(text(sql)).fetchall()

def db_execute(sql, settings=None, echo=None):

if settings is None:

settings = SQLALCHEMY_DATABASE_URI

if echo is None:

echo = SQLALCHEMY_ECHO

return create_engine(settings, echo=echo).connect().execute(text(sql)).rowcount

SQLALCHEMY_DATABASE_URI用于连接数据的数据库。

SQLALCHEMY_ECHO如果设置成 True,SQLAlchemy 将会记录所有 发到标准输出(stderr)的语句,这对调试很有帮助。

当然,我们在setting中设置了基本的连接数据库信息,启动时加载app = create_app('../config.py'),所以这个类删掉也不会报错。

form/login_form.py

# config=utf-8

from flask_wtf import FlaskForm as Form

from wtforms import StringField, PasswordField

from wtforms.validators import DataRequired

class LoginForm(Form):

accountNumber = StringField('accountNumber', validators=[DataRequired('accountNumber is null')])

password = PasswordField('password', validators=[DataRequired('password is null')])

使用Flask-WTF做登录的表单验证,这里简单做了账号密码不为空

如,当我们不填写密码时,点击登录:

2018051410374114.png

model/_init_.py

# config=utf-8

from flask import Flask

from flask_login import LoginManager

from common import db

login_manager = LoginManager()

login_manager.login_view = "user.login"

def create_app(config_filename=None):

app = Flask(__name__)

login_manager.init_app(app)

if config_filename is not None:

app.config.from_pyfile(config_filename)

configure_database(app)

return app

def configure_database(app):

db.init_app(app)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值