Python用Flask和数据库写一个简单的登陆检测

本文介绍了一个简单的Python登录检测系统的实现过程。使用了Flask框架处理前端请求,并通过MySQL数据库进行用户验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近在学校写一个小项目其中刚写到登陆检测,因为是刚自学了python,写一篇文章记录一下过程。。。

  首先写这个功能我用了两个类,一个是用来检测登陆的logincheck.py一个是用来连接数据库的mysql.py

  我们先来看mysql.py:

        连接数据库需要用到mysql驱动所以在终端上输入下面代码来下载驱动
$ pip install mysql-connector  

接着在mysql.py文件中代码如下

#导入mysql驱动
import mysql.connector

class MySQL(object):
    def __init__(self, host= 'localhost', port= '3306', username = 'root', password= 'pwd', db= 'etc', charset= 'UTF-8'):
        self.host = host
        self.port = port
        self.user = username
        self.password = password
        self.db = db
        self.charset = charset

    def connection(self):  # 得到数据库连接
        conn=mysql.connector.connect(host=self.host,port=self.port,user=self.user, password=self.password, database=self.db)
        return conn

    def select(self, sql):  # 查询传入sql语句,返回result结果
        conn = self.connection()
        cursor = conn.cursor()
        # noinspection PyBroadException
        try:
            cursor.execute(sql)
            results = cursor.fetchall()
            return results
        except Exception as e:
            raise e
        finally:
            cursor.close()
            conn.close()

这里我感觉cursor的作用和java中的PreparedStatement有点类似,就是用来执行sql语句并返回结果的。result返回结果被保存在了元组里,cursor.fetchall()用来检查数据库每行数据如找到正确匹配将数据存入元组中并返回,还有一个是cursor.fetchone()方法每次只扫描一行数据所以要扫描数据库中的所有行要用循环。

以上是连接数据库的文件,下面是登陆逻辑的编写:


from flask import Flask
from flask import request
import sys
sys.path.append(r"C:\Users\qq\Desktop\机房项目\kk2")
from util.mysql import MySQL


app=Flask(__name__)
html='''
<!DOCTYPE html>
    <title>Upload File</title>
    <h1>signin</h1>
    <form method=post enctype=multipart/form-data>
         用户名<input type=text name=username>
         密码<input type=password name=pwd>
         <input type=submit value=登陆>
    </form>
    '''
@app.route('/', methods=['GET'])
def signin_form():
    return html
@app.route("/",methods=['GET', 'POST'])
def login():
    # 需要从request对象读取表单内容:
    username=request.form['username']
    pwd=request.form['pwd']
    sql=MySQL()
    tu = sql.select("select * from Admin where userID='"+username+"' and pwd='"+pwd+"';")
    print (tu)
    num=0
    for data in tu:
        num=num+1
    if(num != 0):
        return '登陆成功'
    else:
        return "no"

if __name__ == '__main__':
    app.run() 

由于mysql.py和logincheck.py文件的父目录不同所以在import时需要先导入系统路径才能真正的导入mysql文件,接下来的逻辑就很清晰了,获取表单内容,和数据库做比对。如果对flask了解不多也可以去廖雪峰老师网站中web开发下面简单学习。

附上实际运行图:

数据库结构:


登陆页面:


验证成功:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值